【Unity实战|热更】Addressable读取SO文件报错解决

情景再现

假定你有一个Unity工程,使用了HybridCLR和Addressable,SO文件存放在Addressable中。热更加载后进入游戏场景出现了SO文件读取报错:

UnityEngine.AddressableAssets.InvalidKeyException: Exception of type 'UnityEngine.AddressableAssets.InvalidKeyException' was thrown. No Asset found with for Key=Inventory Model Database. Key exists as Type=System.Object, which is not assignable from the requested Type=InventorySystem.Models.InventoryModelDatabase
UnityEngine.AddressableAssets.Addressables:LoadAssetAsync(Object)

可能原因

读取SO文件时,文件绑定的脚本并没有成功还原出来。见官方文档

解决办法

加载SO文件的代码时不要声明具体的类型,改用System.Object,成功后进行强转。

Before:

Addressables.LoadAssetAsync<InventoryModelDatabase>("Inventory Model Database").Completed += handle =>
			{
				if (handle.Status == AsyncOperationStatus.Succeeded)
				{
					_inventoryModelDatabase = handle.Result;
					Debug.Log($"[{GetType()}] Inventory Model Database loaded!");
				}
				else
					Debug.LogError($"[{GetType()}] Failed to load Inventory Model Database!");
			};

After:

Addressables.LoadAssetAsync<System.Object>("Inventory Model Database").Completed += handle =>
			{
				if (handle.Status == AsyncOperationStatus.Succeeded)
				{
					_inventoryModelDatabase = handle.Result as InventoryModelDatabase;
					Debug.Log($"[{GetType()}] Inventory Model Database loaded!");
				}
				else
					Debug.LogError($"[{GetType()}] Failed to load Inventory Model Database!");
			};

问题解决。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AddressableUnity中的一个工具包,用于管理资源的加载和卸载。iOS指的是在发布应用后,可以通过网络下载新资源文件,实现应用新的功能。 在Unity中使用Addressable可以实现iOS的功能。首先,我们需要将需要的资源文件分割成小块,并上传到服务器上。然后,在应用中使用Addressable加载资源时,可以通过指定资源的地址来加载对应的资源文件。 当应用启动时,可以通过检查服务器上的资源版本号来判断是否需要进行。如果有新的资源文件,可以使用Addressable下载新的资源文件,替换原有的资源文件,以实现应用的新。 使用Addressable进行iOS的好处是可以降低应用的安装包大小,因为可以把一些较大的资源文件分离出来,通过网络进行下载。同时,也可以减少应用的新时间,只需要下载新的资源文件而不是整个应用。 然而,使用Addressable进行也需要注意一些问题。首先,要保证服务器上的资源文件的稳定性和完整性,以免应用在新资源时出现错误。其次,要考虑用户的流量消耗,尽量减少资源文件的大小和下载次数。 总之,通过使用Unity中的Addressable工具包,我们可以实现iOS的功能,实现应用的自动新。这样可以提升用户体验,减少安装包大小和新时间,但也需要注意资源文件的稳定性和用户的流量消耗。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值