Open jiatengmeng opened 2 years ago
按理说,我这个仓库应该是没有问题的,你可以关注下我的场景加载逻辑:
PS : 谢谢使用或者参考我的开源项目,Cheers~
我可能理解了,你可以不要让 可寻址依赖你的热更类型呀,毕竟因果关系都乱了嘛,你可以约定特定的入口 key (string 类型,这种基础数据类型)来初始化热更入口。 另外,用户可以控制 catlog 的加载时机的
还有,描述 remote path 的类型可以不热更哈。
热更代码只能用于热更场景吗?
@jiatengmeng 不知解决没有,遇到同样问题
@3lxl3 1.在loaddll结束后重新加载catalog Addressables.LoadContentCatalogAsync($"{Addressables.RuntimePath}/catalog.json"); 2.不要用具体类型,用object,可以在LoadAssetAsync出来后强转
遇到同样问题,我加载的是其他工程的catalog文件,官网上的常见问题的解决方法不好使
addressables和HybridCLR结合使用导致的资源加载错误 · Issue #2 · Bian-Sh/Assemblies-Hotfix-Toolkit-Unity (github.com)
2.不要用具体类型,用object,可以在LoadAssetAsync出来后强转
我的是用这个办法解决的
@.***
发件人: ShenKang4181 发送时间: 2023-06-25 18:32 收件人: Bian-Sh/Assemblies-Hotfix-Toolkit-Unity 抄送: liuxueliang; Mention 主题: Re: [Bian-Sh/Assemblies-Hotfix-Toolkit-Unity] addressables和HybridCLR结合使用导致的资源加载错误 (Issue #2) 遇到同样问题,我加载的是其他工程的catalog文件,官网上的常见问题的解决方法不好使 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>
Addressables和HybridCLR结合使用导致的资源加载错误 ·问题 #2 ·Bian-sh/Assemblies-Hotfix-Toolkit-Unity (github.com) 2.不要用具体类型,用对象,可以在LoadAssetAsync出来后强转 我的是用这个办法解决的 @. 发件人: 申康4181 发送时间: 2023-06-25 18:32 收件人: Bian-sh/Assemblies-Hotfix-Toolkit-Unity 抄送: 刘学良;提到 主题: Re: [Bian-Sh/Assemblies-Hotfix-Toolkit-Unity] addressables和HybridCLR结合使用导致的资源加载错误 (Issue #2) 遇到同样问题,我加载的是其他工程的catalog文件,官网上的常见问题的解决方法不好使 — 直接回复此电子邮件,在 GitHub 上查看或取消订阅。 您收到此消息是因为您被提及。消息 ID:@.>
我的不行,可能我加载的是别的工程的catalog,强转之后会报sctipt missing
这个情况没有遇到过,之前遇到的是 ScriptableObject 加载问题 猜测 1 资源加载了对应的代码没有加载 2 unity,Addressables和HybridCLR版本是否对应一样,
这个HybridCLR官方关于sctipt missing的问题描述 https://hybridclr.doc.code-philosophy.com/docs/help/commonerrors#%E6%8C%82%E8%BD%BD%E5%9C%A8%E8%B5%84%E6%BA%90%E4%B8%8A%E7%9A%84%E8%84%9A%E6%9C%AC%E5%87%BA%E7%8E%B0-script-missing-%E9%94%99%E8%AF%AF
这个情况没有遇到过,之前遇到的是 ScriptableObject 加载问题 猜测 1 资源加载了对应的代码没有加载 2 unity,Addressables和HybridCLR版本是否对应一样,
这个HybridCLR官方关于sctipt missing的问题描述 https://hybridclr.doc.code-philosophy.com/docs/help/commonerrors#%E6%8C%82%E8%BD%BD%E5%9C%A8%E8%B5%84%E6%BA%90%E4%B8%8A%E7%9A%84%E8%84%9A%E6%9C%AC%E5%87%BA%E7%8E%B0-script-missing-%E9%94%99%E8%AF%AF
我解决了,我在其他的工程里面新建了一个HotUpdate.asmdef,把相关的脚本放到里面,重新打包就好了
热更代码只能用于热更场景吗?
答案是明确的,热更代码只能配合ab使用,因为原工程中不会存在这些类型。 但是,你可以在加载并叠加场景后,对原场景动态挂载热更的 Type 也不是不行,想想这种需求挺有趣,就是感觉外在表现都在,但就是不给你注入灵魂,只有下载了热更代码并挂载,那些外在表现才活了过来。并且,如果不同的热更代码,这个外在的表现还可以不那么一样。这对哪些刻薄的甲方好像很有效,给你看就是不给你用,想用只能付费更新逻辑。
当使用addressables来更新热更新的dll时。由于是先使用了Addressables的LoadAssetAsync函数,导致Addressables需要先进行初始化,此时的初始化中如果资源的类型是在热更新的类型,那么Addressables会认为该资源的类型为System.Object。所以需要先进行dll的加载才能够使用Addressables来加载资源,否则就会报UnityEngine.AddressableAssets.InvalidKeyException: Exception of type 'UnityEngine.AddressableAssets.InvalidKeyException' was thrown. No Asset found with for Key=xxx. Key exists as Type=System.Object, which is not assignable from the requested Type=YourHotUpdateAssetType。 解决思路 1.在结束了dll的加载之后Addressables重新初始化一遍? 2.还是继续使用AssetBundle来加载dll之后再使用Addressables
@3lxl3 1.在loaddll结束后重新加载catalog Addressables.LoadContentCatalogAsync($"{Addressables.RuntimePath}/catalog.json"); 2.不要用具体类型,用object,可以在LoadAssetAsync出来后强转
大佬你好,我采用object加载之后强转的方式拿到的 ScriptableObject类对象时空,单独打印非强转的数据可以打印出来,你知道这种情况是什么原因吗
当使用addressables来更新热更新的dll时。由于是先使用了Addressables的LoadAssetAsync函数,导致Addressables需要先进行初始化,此时的初始化中如果资源的类型是在热更新的类型,那么Addressables会认为该资源的类型为System.Object。所以需要先进行dll的加载才能够使用Addressables来加载资源,否则就会报UnityEngine.AddressableAssets.InvalidKeyException: Exception of type 'UnityEngine.AddressableAssets.InvalidKeyException' was thrown. No Asset found with for Key=xxx. Key exists as Type=System.Object, which is not assignable from the requested Type=YourHotUpdateAssetType。 解决思路 1.在结束了dll的加载之后Addressables重新初始化一遍? 2.还是继续使用AssetBundle来加载dll之后再使用Addressables