UH4L6——ILRuntime调用Unity
UH4L6——ILRuntime调用Unity
ILRuntime调用Unity
ILRuntime跨域调用Unity中相关内容,相对更简单,和Unity开发中一样使用即可
需要注意的是,使用中如果无法正常使用Unity相关组件,都是因为热更工程没有引用对应的Unity相关模块的DLL文件
我们只需要找到对应DLL文件 复制到 热更工程中的UnityDlls文件夹中,并且在热更工程中引用 即可
在ILRuntime工程中做一个主入口
我们在做有热更新功能的项目时,往往会有大量的逻辑是在热更工程中完成的
所以我们会在热更工程中做一个主入口,相当于是把逻辑处理权交给热更工程的感觉
类似在Lua热更相关知识点中讲解的相关内容
ILRuntime热更新工程内
1 | using UnityEngine; |
Unity主工程内
1 | using UnityEngine; |
ILRuntime调用Unity相关
就像在Unity开发中使用一样,引用命名空间后,直接使用即可,之所以我们能够直接使用,是因为热更工程已经引用了Unity对应的dll文件
例如想要在场景上创建空对象并设置位置,就如同Unity内那样编写逻辑即可
1 | using UnityEngine; |
可见,空物体确实被创建了出来,并且被设置了位置
我们自己创建的脚本在ILRuntime里也可以正常的使用,因为热更示例工程已经关联了Assembly-CSharp这个程序集
添加ILRuntime内可调用的内容
注意
测试热更工程中,只关联引用了部分Unity相关dll,
如果想要使用更多,只需要把对应Unity的Dll文件拷贝到热更工程中的UnityDlls文件夹中即可
再在热更工程中设置一下dll文件的引用
假设我们要调用Unity的物理系统相关的内容,我们需要物理系统相关的dll导入到UnityDlls文件夹中
在属性窗口内查看其路径(在VS的菜单栏:视图 —— 属性 打开此窗口)
然后在资源管理器内找到该dll文件,复制它
然后粘贴到UnityDlls文件夹内
然后,在工程的引用处右键选项添加引用
最后选择复制的dll即可
至此,我们可以在项目里使用物理相关内容了,想要引用哪些Unity的内容,就导入哪个dll文件即可
1 | using UnityEngine; |
但值得一提的是,如果直接重新生成,导入的dll也会被打包出来
这时,我们需要在导入的dll文件的属性窗口处,将 复制本地 设置为 False
这样,热更代码就可以正常的使用物理相关内容了