我正在 Unity 2017.1.0f3 中开发一个应用程序(如果这很重要,则适用于 HoloLens)。这个应用程序有 3 个场景
- 场景 1. 用户提供凭据并使用服务进行身份验证。
- 场景 2. 服务提供,应用程序显示用户可以选择的资源列表。
- 场景 3. 选择资源后,
AssetBundle
下载并显示给用户。
这是下载的协程AssetBundle
IEnumerator GetAssetBundle(string assetUrl, Action<AssetBundle> successCallback, Action<string> errorCallback )
{
UnityWebRequest request = UnityWebRequest.GetAssetBundle(assetUrl);
yield return request.Send();
if (request.isHttpError || request.isNetworkError)
{
errorCallback(request.error);
}
else
{
AssetBundle bundle = ((DownloadHandlerAssetBundle)request.downloadHandler).assetBundle;
successCallback(bundle);
}
}
用户有能力在场景之间来回切换,并且可能两次选择相同的资源。这就是问题发生的时候。
用户第一次尝试下载AssetBundle
一切正常。第二次(以及所有后续)下载失败。失败不是下载过程中的错误,而是
((DownloadHandlerAssetBundle)request.downloadHandler).assetBundle;
始终为空。
我认为 Unity 不允许您下载相同AssetBundle
的次数超过一次,并且您必须在下载后对其进行缓存。是这样吗?我想避免这种情况,因为该应用程序最终可以有大量AssetBundle
可供下载的 s 并在下载后将它们全部缓存是一个不好的选择。
如果需要,您是否知道多次下载同一个 AssetBundle 的方法?