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的基本运行环境就有了,可以进行示范案例的使用、测试与学习了!

posted @   桜庭の猫  阅读(749)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示