ILRuntime使用笔记


如果ILRuntime使用时性能有问题,需要确认以下几点:

1.发包前是否做了自动分析CLR绑定

2.是否注册了值类型绑定

3.热更DLL是否为release模式编译

4.发包前是否关闭了Development build

5.编辑器下是否定义了DISABLE_ILRUNTIME_DEBUG

 

注意事项

1. 一般嵌套task或者foreach里多次await容易出现代码执行不到

2. struct在ILRuntime里,如果作为类成员变量,性能比class更低

3. struct不能双层嵌套(值类型在VM里装箱,双层嵌套要两层寻址,目前无法两层寻址)

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

5. 热更里的委托不是真的委托类型,没办法通过Delegate.CreateDelegate创建

6. 直接跟内存和操作系统交互的东西都没法在热更里弄,需要在主工程做这种事情

7. ref out关键字谨慎使用,比如传递ref/out 静态变量时会报错

8. 协程无法使用字符串启动,只支持参数为IEnumerator类型的方式启动或停止协程

 

建议

1. 在热更代码中不建议继承MonoBehaviour

2. 尽可能避免使用特性(Attribute),反射(Reflection)

 

ILRuntime不支持Attribute的继承操作

1. 子类不会继承基类的属性标签,所以热更工程中子类也要有标签

2. Attribute自身的继承

 
参考:https://blog.csdn.net/Chen_Fen/article/details/115668780

参考:https://www.lfzxb.top/et-6-with-ilruntime/

参考:https://www.dazhuanlan.com/magicshui/topics/1567053


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM