什么是Application.streamingAssetsPath和manifestBundlePath?

时间:2018-01-23 03:56:17

标签: c# unity3d assetbundle

我使用UnityWebRequest GetAssetBundle(string uri, uint version, uint crc);

获取了assetbundle

但是Application.streamingAssetsPath是空的....

在哪里下载了assetbundle以及如何加载下载的assetbundle?

我的Unity版本是2017.3

并添加问题。

AssetBundle manifestBundle = AssetBundle.LoadFromFile(manifestBundlePath); AssetBundleManifest manifest = manifestBundle.LoadAsset("AssetBundleManifest");什么是manifestBundlePath以及如何访问和获取此路径?

如何在使用UnityWebRequest.GetAssetBundle

之前访问下载的assetbundles

如果你建议的话,我真的很感谢你。

2 个答案:

答案 0 :(得分:0)

来自the documentation

  

如果你有一个" StreamingAssets"在项目的Assets文件夹中,它将被复制到您的播放器构建中,并出现在Application.streamingAssetsPath给出的路径中。

所以假设你没有有一个" StreamingAssets"在Assets文件夹中的文件夹,然后它将是空白的。

对于您的第二个问题,WHERE是什么,再次来自the documentation

  

路径 - 磁盘上文件的路径。

你以与例子相同的方式得到它:

  

manifestBundlePath

其中Path.Combine(Application.streamingAssetsPath, "myassetBundle")是捆绑包的名称。

同样在调用"myassetBundle"时,LoadAsset("AssetBundleManifest");是要加载的资产的名称。

答案 1 :(得分:0)

这不是它的运作方式;如果您使用using UnityEngine; using UnityEngine.Networking; using System.Collections; public class MyBehaviour : MonoBehaviour { void Start() { StartCoroutine(GetAssetBundle()); } IEnumerator GetAssetBundle() { UnityWebRequest www = UnityWebRequest.GetAssetBundle("http://www.my-server.com/myData.unity3d"); yield return www.SendWebRequest(); if(www.isNetworkError || www.isHttpError) { Debug.Log(www.error); } else { // !!!!!! <--- Notice we do not load the asset bundle from file. AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(www); } } } ,则必须使用响应加载资产包,如文档所示:

using System.Collections;
using System.IO;
using UnityEngine;
using UnityEngine.Networking;

public class FileDownloader : MonoBehaviour {

    void Start () {
        StartCoroutine(DownloadFile());
    }

    IEnumerator DownloadFile() {
        var uwr = new UnityWebRequest("http://www.my-server.com/myData.unity3d", UnityWebRequest.kHttpVerbGET);
        string path = Path.Combine(Application.persistentDataPath, "myData.unity3d");
        uwr.downloadHandler = new DownloadHandlerFile(path);
        yield return uwr.SendWebRequest();
        if (uwr.isNetworkError || uwr.isHttpError)
            Debug.LogError(uwr.error);
        else {
            // !!! <-- Now we have a path to the downloaded asset
            Debug.Log("File successfully downloaded and saved to " + path);
            var myLoadedAssetBundle = AssetBundle.LoadFromFile(path); 

            // Matches some 'Resources/MyObject.prefab'
            var prefab = myLoadedAssetBundle.LoadAsset.<GameObject>("MyObject");
            Instantiate(prefab);
        }             
    }
}

如果您想手动下载并保存文件,请按以下步骤操作:

{{1}}