ILRunTime热更新使用细节汇总(持续更新)

0.官方的注意事项

1.不要用nullable

2.尽量不要用foreach,原理限制,有gc。一般嵌套task或者foreach里多次await容易出现代码执行不到的情况

3.不要用struct,struct在ILRuntime里,如果作为成员变量,性能比class更低。struct不能双层嵌套(值类型在VM里装箱,双层嵌套要两层寻址,目前无法两层寻址)

4.热更里try catch的话,需要取ex.Data["StackTrace"]和ex.Data["Message"]

5.别人的细节汇总,其中有些说法错误:

注意!!!第3条是错误的,只要把你要多线程同时执行的类型或方法预热了,然后就可以随便多线程了

6.显式实现 和 隐式实现的方法同名时,会执行隐式实现的方法

7.使用ILRuntime遇到的一些问题 - 知乎 (zhihu.com)

8.启动和关闭协程放在主工程中,参照官方demo

9.发布时在ProjectSetting添加宏DISABLE_ILRUNTIME_DEBUG,可屏蔽来自ILRunTime的Log

10.热更层中挂在gameObject的继承MonoBehaviour的脚本上有动画关键帧事件可在MonoBehaviour适配器上添加相应的适配方法

11.若有多个热更dll,可只用一个Appdomain,只需用命名空间将多个dll生成的clr绑定区分即可

12.ILRunTime热更层断点注意事项:

 13.用asmdef自动生成的热更项目文件。

最后还要删除一个xml设置字段,要不然不能用vs编译。

14.int[,]  float[,] byte[,]这些可以是可以用的,非基础类型的二维数组不支持,比如Vector2[,]不可以

15.热更工程需要断点时,可以先startservice 然后加载 dll 和pdb ,startservice可以用编辑器扩展执行,只要保证Appdmain和运行unity时的是同一个就行

16.sdk类标个[Perserve],打上这个既不会生产冗余绑定撑大内存,也不会被剪裁掉 以备不时之需

posted @ 2021-11-26 11:47  阳春白雪_Seven  阅读(1712)  评论(0编辑  收藏  举报