一、前言
通常来讲,当我们使用热更调用Unity主工程的代码时,是需要通过反射来实现的,对反射有了解的朋友应该都知道,这玩意挺好用,但就是比较费性能,如果用得多了,GC就得飚上来,那这谁敢用啊是吧!为了解决这个问题,ILRuntime提出了这样的解决方案:
![]()
没错,就是通过CLR方法绑定机制(简称:CLR绑定)可以解决这个问题!这时候就有朋友要问了,啥是CLR绑定呀?这位朋友问得非常好,那接下来就让我们深入地浅浅地研究下这个玩意吧!
二、CLR重定向
在了解CLR绑定前,我们得先来了解下CLR重定向,这时候又有朋友要问了,啥是CLR重定向呀?CLR重定向,顾名思义就是当IL解析器发现调用CLR方法时会将其重定向到另外一个方法里去重写,好像说得有点官方哈,举个栗子就明白了:
比如我在热更中调用了Debg.Log,但是可以通过CLR重定向挟持该方法,并重写该方法。
我们先在热更中写一个Debug.Log:

正常来说,运行后应该就是输出“热更的Log”,但这次不一样,这次我们要挟持这行代码,改变他的输出结果!
第一步,在主工程中编写重定向方法(项目需要允许unsafe代码)

最低0.47元/天 解锁文章
1991

被折叠的 条评论
为什么被折叠?



