unity读取过长textasset的写法

textAst //动态获取的textasset

//用流读取

MemoryStream ms = new MemoryStream(textAst.bytes);
StreamReader sr = new StreamReader(ms);
while (sr.Peek() >= 0)
{
string lineContent = sr.ReadLine();

if (string.IsNullOrEmpty(lineContent))
break;
GfLanguage gfLan = LanguageAnalysis(lineContent, true);
if (!GameData.listLanguageInfo.ContainsKey(gfLan.id))
GameData.listLanguageInfo.Add(gfLan.id, gfLan);

}
sr.Dispose();
ms.Dispose();

Resources.UnloadAsset(textAst);

流式读写:

可以这样理解。

流式数据访问就像勤快的小弟,来了一点数据,就立马处理掉,立马分发到各个存储节点来响应分析、查询。

与之相反的是,非流式数据访问,就像是职场混了多年的老油条,来了一点数据,懒得处理,等堆成一堆,再一起处理。等堆成一堆,处理完,再分发到各个存储节点,响应分析、查询。

流式数据访问,就相当下载10G的电影,用迅雷边下边播的模式。

非流式数据访问,就相当于,10G的电影,完全下好了,再播放。

 

while (sr.Peek() >= 0)
{

}

最近碰到一个问题,这种写法一般被放在协程里被主加载程序调用,有时会出现未读完就退出了,解决方法:添加标志位,主加载程序在标志位未制成true前一直等待。

Load.cs:

public static bool sucess = false;

public void Load()

{

while (sr.Peek() >= 0)
{

......

}

success = true;
}

Main.cs:

if(!Load.successs)

{

yield return null;

}

 

posted @ 2021-04-26 18:01  mc宇少  阅读(518)  评论(0编辑  收藏  举报