HybridCLR+Addressables踩坑/经验记录

发布网友 发布时间:2024-10-22 11:59

我来回答

1个回答

热心网友 时间:2024-11-06 21:08

在探索HybridCLR与Addressables的整合过程中,我遇到不少挑战,这里记录下一些关键的坑和经验,后续我会持续更新这些内容。

遇到HybridCLR问题时,首要建议是查阅官方文档,特别是更换引擎版本或打包平台时,务必重新进行install操作。这是因为Unity Editor中的il2cpp代码会根据平台和版本变化,不同环境可能导致编译错误。确保开发机和打包机上都执行install以匹配正确的il2cpp源码。

在处理热更程序集引用时,务必注意Assembly-CSharp中可能存在的引用。由于HybridCLR剔除热更程序集,可能导致编译错误。通过编辑热更程序集的.asmdef文件,禁用auto referenced选项,有助于定位问题,但需注意这可能影响到编辑器功能的使用。

在组织代码结构时,应避免将Editor文件夹置于asmdef管理范围,以防止混淆和打包错误。所有Editor代码应统一放在根目录的Editor文件夹下。

集成插件时,如果插件没有自定义程序集,可能会导致热更问题。解决方法是为这些插件创建单独的asmdef文件,以便正确引用。

对于Addressables,每次打包后的bin文件务必保留,因为它是热更新的依据。丢失bin文件可能导致用户无法进行热更新,即使不发布新版本也是如此。

在每次打包前,需要删除自动生成的ContentUpdate group,避免版本混淆。同时,针对下载过程中的卡顿,可以调整请求超时和重试次数以提高稳定性。

在游戏运行中,由于Addressables的检测机制,中途退出游戏后重新打开可能不会触发下载。解决方法是记录第一次检测的结果,并在重新打开时检查,必要时继续下载。

最后,切换平台时的Domain Reload问题不容忽视。避免在脚本中直接修改ScriptingDefineSymbolsForGroup或SwitchActiveBuildTarget,以防代码重新编译并可能引发的错误。官方建议使用命令行模式或利用InitializeOnLoad和SessionState来处理这种情况。

记得在使用Addressables的接口时,务必释放不再需要的handle,以避免潜在的错误发生。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com