コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Addressable Asset System ではシーンのアセットバンドルの読み込みに失敗した場合にもシーンの読み込み処理に進んでしまいエラーと例外が発生する

概要

  • AssetBundleResource でシーンのアセットバンドルのダウンロードに失敗しても
    シーンの読み込み処理に進んでしまう
  • シーンの読み込み処理は SceneProvider.cs に書かれており、
    下記のエラーと例外が発生する
Scene 'XXXX' couldn't be loaded because it has not been added to the build settings or the AssetBundle has not been loaded.
To add a scene to the build settings use the menu File->Build Settings...
UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:<.ctor>b__33_0(AsyncOperationHandle)
DelegateList`1:Invoke(AsyncOperationHandle) (at Library/PackageCache/com.unity.addressables@1.7.4/Runtime/ResourceManager/Util/DelegateList.cs:69)
UnityEngine.ResourceManagement.ResourceManager:Update(Single)
MonoBehaviourCallbackHooks:Update() (at Library/PackageCache/com.unity.addressables@1.7.4/Runtime/ResourceManager/Util/MonoBehaviourCallbackHooks.cs:19)
NullReferenceException: Object reference not set to an instance of an object
UnityEngine.ResourceManagement.ResourceProviders.SceneProvider+SceneOp.InternalLoadScene (UnityEngine.ResourceManagement.ResourceLocations.IResourceLocation location, System.Boolean loadingFromBundle, UnityEngine.SceneManagement.LoadSceneMode loadMode, System.Boolean activateOnLoad, System.Int32 priority) (at Library/PackageCache/com.unity.addressables@1.7.4/Runtime/ResourceManager/ResourceProviders/SceneProvider.cs:69)
UnityEngine.ResourceManagement.ResourceProviders.SceneProvider+SceneOp.Execute () (at Library/PackageCache/com.unity.addressables@1.7.4/Runtime/ResourceManager/ResourceProviders/SceneProvider.cs:61)
UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1[TObject].InvokeExecute () (at Library/PackageCache/com.unity.addressables@1.7.4/Runtime/ResourceManager/AsyncOperations/AsyncOperationBase.cs:409)
UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1[TObject].<.ctor>b__33_0 (UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle o) (at Library/PackageCache/com.unity.addressables@1.7.4/Runtime/ResourceManager/AsyncOperations/AsyncOperationBase.cs:110)
DelegateList`1[T].Invoke (T res) (at Library/PackageCache/com.unity.addressables@1.7.4/Runtime/ResourceManager/Util/DelegateList.cs:69)
UnityEngine.Debug:LogException(Exception)
DelegateList`1:Invoke(AsyncOperationHandle) (at Library/PackageCache/com.unity.addressables@1.7.4/Runtime/ResourceManager/Util/DelegateList.cs:73)
UnityEngine.ResourceManagement.ResourceManager:Update(Single)
MonoBehaviourCallbackHooks:Update() (at Library/PackageCache/com.unity.addressables@1.7.4/Runtime/ResourceManager/Util/MonoBehaviourCallbackHooks.cs:19)
  • 機内モードで動作確認すると再現できる
  • Unity エディタ上で上記エラーの動作確認をする場合は
    SceneProvider.cs の #if !UNITY_EDITOR' を#if true` に書き換える