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的基本运行环境就有了,可以进行示范案例的使用、测试与学习了!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了