我使用UnityWebRequest GetAssetBundle(string uri, uint version, uint crc);
但是Application.streamingAssetsPath
是空的....
在哪里下载了assetbundle以及如何加载下载的assetbundle?
我的Unity版本是2017.3
并添加问题。
AssetBundle manifestBundle = AssetBundle.LoadFromFile(manifestBundlePath); AssetBundleManifest manifest = manifestBundle.LoadAsset("AssetBundleManifest");
什么是manifestBundlePath以及如何访问和获取此路径?
如何在使用UnityWebRequest.GetAssetBundle
如果你建议的话,我真的很感谢你。
答案 0 :(得分:0)
如果你有一个" 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}}