ILRuntime的介绍与环境架构
关于 ILRuntime
ILRuntime项目为基于C#的平台(例如Unity)提供了一个纯C#实现,快速、方便且可靠的IL运行时,使得能够在不支持JIT的硬件环境(如iOS)能够实现代码的热更新
ILRuntime 与其他热更新方面的优势
同市面上的其他热更方案相比,ILRuntime主要有以下优点:
- 无缝访问C#工程的现成代码,无需额外抽象脚本API
- 直接使用VS2015进行开发,ILRuntime的解译引擎支持.Net 4.6编译的DLL
- 执行效率是L#的10-20倍
- 选择性的CLR绑定使跨域调用更快速,绑定后跨域调用的性能能达到slua的2倍左右(从脚本调用GameObject之类的接口)
- 支持跨域继承
- 完整的泛型支持
- 拥有Visual Studio的调试插件,可以实现真机源码级调试。支持Visual Studio 2015 Update3 以及Visual Studio 2017和Visual Studio 2019
- 最新的2.0版引入的寄存器模式将数学运算性能进行了大幅优化
C#与Lua热更对比
目前市面上主流的热更方案,主要分为Lua的实现和用C#的实现,两种实现方式各有各的优缺点。
- Lua是一个已经非常成熟的解决方案,但是对于Unity项目而言,也有非常明显的缺点。就是如果使用Lua来进行逻辑开发,就势必要求团队当中的人员需要同时对Lua和C#都特别熟悉,或者将团队中的人员分成C#小组和Lua小组。不管哪一种方案,对于中小型团队都是非常痛苦的一件事情。
- 用C#来作为热更语言最大的优势就是项目可以用同一个语言来进行开发,对Unity项目而言,这种方式肯定是开发效率最高的。
- Lua的优势在于解决方案足够成熟,之前的C++团队可能比起C#,更加习惯使用Lua来进行逻辑开发。此外借助luajit,在某些情况下的执行效率会非常不错,但是luajit现在维护情况也不容乐观,官方还是推荐使用公版Lua来开发。
ILRuntime 的搭建
在Unity2018以上版本中开始使用ILRuntime,所以我们可以很方便的在Unity中部署它的运行环境
1.新建任意一个空项目导入ILRuntime,版本在Unity2018以上即可,步骤如下

2.打开 Edit -> Project Settings -> Player -> 找到 Other Settings 下的 Allow 'unsafe' Code ,步骤如下

3.根据官方目前的更新,下载合适的.Net 支持库版本,我写这篇文档时官方说明的支持版本为.Net 4.6

4.(建议下载)下载官方示范案例方法:
- 在Project目录下,找到ILRuntime文件夹中的README文档,下载官方示范案例

- 在导入的PackManager中直接导入官方示范案例

5.在Project列表中新建一个StreamingAssets文件夹,因为我们最终开发出来的热更新逻辑代码会在StreamingAssets中存放、调用
6.此时我们的目录结构为

7.(扩展修改)导入的Demo文件夹,打开后有一个配置文件可以进行修改



(扩展 ---> 如何快速查询自己运用的.Net 代码库版本)
在保证Preject内有任意一个C#脚本后,打开项目文件夹至Assets同级的文件夹内,会有一个Assembly-CSharp.csproj的文件,打开即可知道自己所使用的.Net代码库版本


8.在同目录下,打开HotFix_Project.sln文件,更改编译设置,重新生成解决方案






生成成功后我们的StreamingAssets目录就会自动生成热更逻辑代码了,目录如图

9.此时ILRuntime的基本运行环境就有了,可以进行示范案例的使用、测试与学习了!

浙公网安备 33010602011771号