Android平台下的StreamingAsset路径

Android平台下的StreamingAsset路径

这两天给一个游戏做移植的时候,踩了一个巨大的坑(准确的说是被源码坑了):Android平台下不要通过FILE访问StreamAsset! 游戏刷不出小怪,找了两三天才发现是小怪的配置文件没加载成功。

首先,Unity下常用的路径大概有四个:

  1. dataPath

  2. persistentDataPath

  3. streamingAssetsPath

  4. temporaryCachePath

具体在各个操作系统下对应的路径大家可以具体到unity文档中查。

首先,这四个路径全部为只读,意思是其内容不会因为游戏更新而改变,因此常用于存放持久数据。比如玩家的游戏存档就可以放在persistentDataPath下(单机游戏)。

对于StreamingAssetPath,无法用C#的File方式在WebGL和Android平台下访问此文件夹。如果想在这两个平台下访问,应当使用UnityWebRequest类(或使用WWW类,但UnityWebRequest正是unity平台下WWW类的升级版,因此建议使用UnityWebRequest)。

使用方法如下:

#if UNITY_ANDROID
    UnityWebRequest webRequest = UnityWebRequest.Get(filePath);
    webRequest.SendWebRequest();
    if (webRequest.error == null)
    {
        while (!webRequest.downloadHandler.isDone){}
        x = webRequest.downloadHandler.text;
    }
    else
    {
        Debug.LogError("Cannot open file: " + filePath);
        return;
    }
#else

上面是用阻塞方式读取。较大文件的加载应当使用协程:

#if UNITY_ANDROID
    UnityWebRequest webRequest = UnityWebRequest.Get(filePath);
    yield return webRequest.SendWebRequest();
    if(www.isNetworkError || www.isHttpError) {
        //exception处理
    }
    else{
        x = webRequest.downloadHandler.text;
    }
#else

其中,上面的filepath建议使用System.Uri类进行构造。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值