Unity3D :从 HTTP 服务器下载 AssetBundle (GET)
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生
从 HTTP 服务器下载 AssetBundle (GET)
重要提示:UNet 是一个已弃用的解决方案,新的多人游戏和网络解决方案(游戏对象的网络代码)正在开发中。有关更多信息和后续步骤,请参阅适用于游戏对象的 Unity 网络代码网站上的信息。 |
要从远程服务器下载 AssetBundle,可使用 UnityWebRequest.GetAssetBundle
。此功能将数据串流到内部缓冲区,后者负责在工作线程上解码和解压缩 AssetBundle 的数据。
此函数的参数有多种形式。最简单的形式仅采用一个参数:下载 AssetBundle 时应使用的 URL。您可以选择提供校验和来验证下载数据的完整性。
或者,如果希望使用 AssetBundle 缓存系统,可提供版本号或 Hash128 数据结构。这些值与通过 WWW.LoadFromCacheOrDownload
为旧系统提供的版本号或 Hash128 objects
相同。
详细信息
- 此函数将创建
UnityWebRequest
并将目标 URL 设置为提供的 URL 参数。此函数还会将 HTTP 动词设置为GET
,但不会设置任何其他标志或自定义标头。 - 此函数将
DownloadHandlerAssetBundle
附加到UnityWebRequest
。此下载处理程序有一个特殊的assetBundle
属性,一旦下载和解码了足够的数据,便可使用该属性来提取 AssetBundle,从而允许访问 AssetBundle 中的资源。 - 如果提供版本号或
Hash128
对象作为参数,也会将这些参数传递给DownloadHandlerAssetBundle
。下载处理程序随后将采用缓存系统。
示例
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
public class MyBehaviour : MonoBehaviour {
void Start() {
StartCoroutine(GetAssetBundle());
}
IEnumerator GetAssetBundle() {
UnityWebRequest www = UnityWebRequestAssetBundle.GetAssetBundle("https://www.my-server.com/myData.unity3d");
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success) {
Debug.Log(www.error);
}
else {
AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(www);
}
}
}
由3D建模学习工作室整理翻译,转载请注明出处!