Unity发布WebGL之后读取StreamingAssets文件路径数据

借鉴文章

Unity打包WebGL之后保留了StreamingAssets文件夹,但是使用Application.streamingAssetsPath是无法读取到StreamingAssets文件路径的。为了能正确读取到本地StreamingAssets文件的数据,我们需要使用到UnityWebRequest类。

UnityWebRequest 由三个元素组成

  • UploadHandler 处理数据将数据发送到服务器的对象
  • DownloadHandler 从服务器接收数据的对象
  • UnityWebRequest 负责 HTTP通信流量控制来管理上面两个对象的对象。

Uri类
System.Uri这个类,这个类可以帮助我们更好的构造uri,特别是在使用本地路径得时候,结合Path.Combine能更好的得出Uri路径。因为平台的区别,Uri路径也不同:

  • Windows平台 file:///D:/DATA/StreamingAssets/data.json
  • WebGl平台 http://localhost/StreamingAssets/data.json
  • Android平台 jar:file:///data/app/xxx!/assets/data.json
  • iOS平台 Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data/Raw

使用Path.Combine拼接路径字符串

var uri = new System.Uri(Path.Combine(Application.streamingAssetsPath,
“data.json”));

使用UnityWebRequest.Get读取文件

public class JsonTest : MonoBehaviour
{
    private void Start()
    {
        StartCoroutine(GetData());
    }

    IEnumerator GetData()
    {
        var  uri = new  System.Uri(Path.Combine(Application.streamingAssetsPath,"test.txt"));
        UnityWebRequest www = UnityWebRequest.Get(uri);
        yield return www.SendWebRequest();
 
        if(www.isNetworkError || www.isHttpError) {
            Debug.Log(www.error);
        }
        else
        {
            Debug.Log(www.downloadHandler.text);
            string jsonStr  = www.downloadHandler.text;

            TestData data = JsonMapper.ToObject<TestData>(jsonStr);
            
            Debug.Log("姓名:" + data.userName + "\n年龄:" + data.age);
        }
    }
}

[System.Serializable]
public class TestData
{
    public string userName;
    public int age;
}

测试test.txt数据:

{
   "userName":"王武",
   "age":26
}
  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值