去迪拜网站做乞丐,临沂小程序开发公司哪家好,flash类网站开发,学校网站设计思路情景再现
假定你有一个Unity工程#xff0c;使用了HybridCLR和Addressable#xff0c;SO文件存放在Addressable中。热更加载后进入游戏场景出现了SO文件读取报错#xff1a;
UnityEngine.AddressableAssets.InvalidKeyException: Exception of type UnityEngine.Addressab…情景再现
假定你有一个Unity工程使用了HybridCLR和AddressableSO文件存放在Addressable中。热更加载后进入游戏场景出现了SO文件读取报错
UnityEngine.AddressableAssets.InvalidKeyException: Exception of type UnityEngine.AddressableAssets.InvalidKeyException was thrown. No Asset found with for KeyInventory Model Database. Key exists as TypeSystem.Object, which is not assignable from the requested TypeInventorySystem.Models.InventoryModelDatabase
UnityEngine.AddressableAssets.Addressables:LoadAssetAsync(Object)可能原因
读取SO文件时文件绑定的脚本并没有成功还原出来。见官方文档。
解决办法
加载SO文件的代码时不要声明具体的类型改用System.Object成功后进行强转。
Before:
Addressables.LoadAssetAsyncInventoryModelDatabase(Inventory Model Database).Completed handle {if (handle.Status AsyncOperationStatus.Succeeded){_inventoryModelDatabase handle.Result;Debug.Log($[{GetType()}] Inventory Model Database loaded!);}elseDebug.LogError($[{GetType()}] Failed to load Inventory Model Database!);};
After:
Addressables.LoadAssetAsyncSystem.Object(Inventory Model Database).Completed handle {if (handle.Status AsyncOperationStatus.Succeeded){_inventoryModelDatabase handle.Result as InventoryModelDatabase;Debug.Log($[{GetType()}] Inventory Model Database loaded!);}elseDebug.LogError($[{GetType()}] Failed to load Inventory Model Database!);};
问题解决。