Unity发布WebGl逐行读取本地文本文件
发表于2018-05-22
Unity发布成WebGL可以用chrome打开,那么如何在WebGl中逐行读取本地的文本文件呢?
之前在网上有了解到可以利用WWW进行文件读取,发现读取后只能转换为string类型,我需要将其进行逐行处理,应该怎么办呢?经过一番搜寻,终于实现了文本文件的读取,核心代码如下:
using UnityEngine; using System.Collections; public class OpenFile : MonoBehaviour { void Start() { StartCoroutine(OpenDataFile());//开启协程运行函数 } private IEnumerator OpenDataFile() { var www = new WWW(@"file://D://DataFile.LAS");//注意这句的格式,我在这里打开了D盘根目录下的DataFile.LAS文件,其他文本文件也可以打开 yield return www; string str; string strAll = System.Text.Encoding.UTF8.GetString(www.bytes);//注意这一句,以UTF8格式按byte读取文本文件,存入string
<span style="white-space:pre;"> </span>//上一语句应该也可以用右边语句替代:string strAll = www.text; string[] sr = strAll.Split(new string[] { "\r\n" }, System.StringSplitOptions.None);//将string根据回车换行符进行分割,得到字符串数组,即按行存放
<span style="white-space:pre;"> </span>//接下来根据需要对sr字符串数组进行想要的操作
}
本质上上述方法是将文本文件读入形成一个超长字符串,然后再将字符串按行进行分割。所以如果文本文件太大,内存应该会吃不消。我之前希望利用stream流的方法获取文本文件,但是不知道WWW类型数据如何转化为stream流(目前可以转化为单个stream),如果有更好的方法,欢迎各位告知。
上述方法应该可以在webgl中得到文本数据,目前我在chrome中测试可用。如果文本文件过大的话需要在Unity编辑器中的File->Build Settings中选择WebGL,并在Player Settings->Publishing Settings中将WebGL Memory Size设置更大。
来自:https://blog.csdn.net/li727507857/article/details/71216090