@@ -403,7 +403,6 @@ HybridCLR提供了快捷的自动生成工具,运行菜单命令 `HybridCLR/Ge
403403
404404为出错的函数所在的dll补充元数据即可。
405405
406-
407406### GetReversePInvokeWrapper fail. exceed max wrapper num of method
408407
409408Wrapper函数不足。你需要为热更新中的添加了MonoPInvokeCallback特性的函数预留Wrapper函数,详见[ MonoPInvokeCallback支持] ( ../basic/workwithscriptlanguage.md )
@@ -418,8 +417,8 @@ Wrapper函数不足。你需要为热更新中的添加了MonoPInvokeCallback特
418417
419418> 当使用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。
420419
421-
422420解决办法有如下几种:
421+
423422- 使用` LoadAsset<System.Object> ` 接口加载后再强转
424423- 在loaddll结束后重新加载catalog ` Addressables.LoadContentCatalogAsync($"{Addressables.RuntimePath}/catalog.json"); `
425424
@@ -474,21 +473,39 @@ Wrapper函数不足。你需要为热更新中的添加了MonoPInvokeCallback特
474473- 升级到v5.2.0+版本,支持最大64M的dll
475474- 将热更新dll拆分成多个更小的dll
476475
477- ## 启动时执行AutomaticWorldBootstrap::Initialize过程中调用ResourceCatalogData::GetGUIDFromPath崩溃
476+ ### 启动时执行AutomaticWorldBootstrap::Initialize过程中调用ResourceCatalogData::GetGUIDFromPath崩溃
478477
479478你当前使用的entities版本不能直接使用Player Building中打包,必须安装` com.unity.platforms ` ,使用它单独的提供的打包方式,[ 详细文档] ( https://docs.unity3d.com/Packages/com.unity.entities@0.51/manual/ecs_building_projects.html ) 。
480479
481- ## Job.ScheduleBatch 崩溃
480+ ### 热更新程序集引用了Unity.Entities,运行时抛出异常 DllNotFoundException: netstandard
481+
482+ 正常情况下netstandard程序集会在构建过程中被裁剪,可以通过` link.xml ` 中保留netstandard解决。
483+
484+ ### 运行DOTS时遇到Invaild type name的异常
485+
486+ dots生成的assembly上的 [ BurstCompiler.StaticTypeReinit(type)] 注解中type类型名有错误。例如:它生成了这样的类型名
487+ "GameLogic.TestSystem+GameLogic.__ codegen__ OnCreate_00000015$BurstDirectCall" ,正确应该是“ GameLogic.TestSystem+__ codegen__ OnCreate_00000015$BurstDirectCall” ,
488+ hybridclr读取到这个custom attribute时调用il2cpp接口解析类型时就出错了。
489+
490+ 解决办法有几条:
491+
492+ - 修改 il2cpp::vm::Tyep::TyepNameParser::ParseTypeName的实现,让它能够读出dots生成的病态的名字
493+ - 移除System、ComponentData等类型的命名空间,这样嵌套子类型中就不会错误地包含namespace,在这种情况下名字就能正确解析了
494+ - 找unity报告让他们修复这个bug
495+
496+ 类似的问题参考[ issue #164 ] ( https://github.com/focus-creative-games/hybridclr/issues/164 ) 。
497+
498+ ### Job.ScheduleBatch 崩溃
482499
483500hybridclr与dots不兼容导致,商业化版本可以解决这个问题。
484501
485- ## 游戏启动时出现` Unable to load il2cpp ` 错误
502+ ### 游戏启动时出现` Unable to load il2cpp ` 错误
486503
487504这是因为你当前使用的hybridclr与你的Unity版本号不兼容导致的。一般来说是因为你的版本太新,你当前的hybridclr未及时合并你当前版本的il2cpp的代码改动。
488505
489506请升级hybridclr到最新版本,然后重新打包。如果仍然有问题,请报告给我们,我们会在一周内发布新版本解决这个兼容问题。
490507
491- ## WebGL 运行时出现 function signature mismatch错误
508+ ### WebGL 运行时出现 function signature mismatch错误
492509
493510WebGL平台打包时默认使用 ` faster (smaller) build ` 选项,该选项会开启完全泛型共享,而社区版本必须补充元数据后才能与完全泛型共享机制配合工作。请依次尝试以下办法:
494511
@@ -498,7 +515,7 @@ WebGL平台打包时默认使用 `faster (smaller) build`选项,该选项会
4985151 . 如果仍有问题,升级到最新的hybridclr版本
4995161 . 如果极有问题,请联系我们技术支持
500517
501- ## webgl(或微信小游戏之类)在iOS5.4 系统出现"Not implemented"、"Class::FromIl2CppType"之类的错误日志,卡在启动画面无法启动
518+ ### webgl(或微信小游戏之类)在iOS5.4 系统出现"Not implemented"、"Class::FromIl2CppType"之类的错误日志,卡在启动画面无法启动
502519
503520此为 Unity & iOS 15.4 的 BUG,解决办法有两个:
504521
0 commit comments