Unity发布WebGl逐行读取本地文本文件

发表于2018-05-22
评论0 6k浏览
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 

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引