从URL加载AssetBundle

问题描述 投票:0回答:1

我正在尝试加载资产捆绑表单服务器。

我的资产包位于URL上。现在我在webgl平台的编辑器中玩游戏。

我的负载资产捆绑脚本:

[Obsolete]
IEnumerator Start()
{
    while (!Caching.ready)
        yield return null;

    using (var www = WWW.LoadFromCacheOrDownload("http://dev71.onlinetestingserver.com/assetBundles/cube", 5))
    {
        yield return www;
        if (!string.IsNullOrEmpty(www.error))
        {
            Debug.Log(www.error);
            yield return null;
        }
        var myLoadedAssetBundle = www.assetBundle;
        var asset = myLoadedAssetBundle.mainAsset;
        Instantiate(www.assetBundle.LoadAsset("cube"));
    }
}

但是它给出了错误:

NullReferenceException:对象引用未设置为对象的实例LoadAssetBundles + d__0.MoveNext()(位于Assets / LoadAssetBundles.cs:76)UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator枚举器,System.IntPtr returnValueAddress)(位于C:/buildslave/unity/build/Runtime/Export/Scripting/Coroutines.cs:17)

我只希望在玩游戏时,它可以完美加载资产束。我已经创建了资产捆绑包。

c# visual-studio unity3d unity-webgl
1个回答
0
投票

您不检查是否为空。

using (var www = WWW.LoadFromCacheOrDownload("http://dev71.onlinetestingserver.com/assetBundles/cube", 5))
{
    yield return www;  <--- www MIGHT BE NULL
    if (!string.IsNullOrEmpty(www.error))
    {
        Debug.Log(www.error);
        yield return null;
    }
    var myLoadedAssetBundle = www.assetBundle; 

    var asset = myLoadedAssetBundle.mainAsset; <--- www.assetBundle MIGHT BE NULL
    Instantiate(www.assetBundle.LoadAsset("cube"));
}
© www.soinside.com 2019 - 2024. All rights reserved.