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;
}