资源大湿 发表于 2022-11-30 07:37

Unity ILRuntime 实战教程:ILRuntime开发原则与接口如何绑定

前言



ILRuntime开发的基本原则
在使用ILRuntime开发之前大家要有一个基本认识,虽然都是C#,ILRuntime的逻辑热更项目中的类不能直接继承Unity C#项目中的类,Unity C#项目中也不能直接识别逻辑热更项目中开发的”组件类”, 因为他们是两个不同的执行环境,你可以理解为是两个域,技术原理都不一样。我们在逻辑热更项目中使用的Unity C#的对象实例与接口,我们叫做native对象实例与native接口,这些c# native的对象实例我们不能直接在逻辑热更项目中new 出来,而是通过Unity C#项目传递过来或者直接调用unity C#项目的接口生成的。比如GameObject, 我们可以调用GameObject.Instantiate实例化出来,但是不能在逻辑热更项目中 new GameObject();因为GameObject属于Unity C#的native对象实例,不是逻辑热更项目域中的”对象实例”。有了这个基本认识以后,我们得出做热更开发的几个基本认识:


我们上几个截图,来看下一个ILRuntime的热更的案例Demo:










如何做到热更项目工程解释使用C#工程的接口


当我们使用逻辑热更项目进行逻辑开发的时候,我们要把使用的Unity引擎相关的.dll的引用用,要拉入到我们逻辑热更项目中,这样当我们在逻辑热更项目中调用Unity引擎相关的组件函数的时候,会生成”依赖符号”到生成的逻辑热更.dll中。这样也就解释了为什么逻辑热更项目中要添加Unity .dll库的引用,其实就是为逻辑热更.dll生成Unity引擎的引用符号。


当ILRuntime加载逻辑热更.dll的时候,会把逻辑热更.dll的符号表重新定向到运行中的对应的位置,这样在用户毫无察觉的情况下完成了逻辑热更项目可以调用Unity 引擎接口的绑定。
页: [1]
查看完整版本: Unity ILRuntime 实战教程:ILRuntime开发原则与接口如何绑定