ILRuntime入门笔记
本文为作者原创,转载请注明出处:https://www.cnblogs.com/zhaoqingqing/p/10274176.html
基础知识#
官方文档:https://ourpalm.github.io/ILRuntime/ ,离线帮助文档目录:ILRuntime\docs\source\src\v1\guide\
官方Unity3D热更例子工程:https://github.com/Ourpalm/ILRuntimeU3D/
ILRuntime肯定可以做到IOS的热更。
本文中的名词解释:
域 : 应用程序的上下文,可以理解为使用热更之后,在游戏中存在两个域,一个是游戏主程序,另一个是热更域。
CLR: Unity脚本(C#)的公共运行库,公共运行环境
Assembly-CSharp.dll: Unity脚本(C#)的编译成的dll,非特殊目录下的脚本都放在这个dll下。安卓下可通过反射获取方法和变量。
hotFix.dll: 指热更工程生成的dll,和Unity主工程是两个不同的dll。
ILRuntime基本原理#
ILRuntime借助Mono.Cecil库来读取DLL的PE信息,以及当中类型的所有信息,最终得到方法的IL汇编码,然后通过内置的IL解译执行虚拟机来执行DLL中的代码。IL解释器代码在ILIntepreter.cs,通过Opcode来逐语句执行机器码,解释器的代码有四千多行。

ILRuntime热更流程#

ILRuntime主要限制#

ILRuntime启动调试#
- ILRuntime建议全局只创建一个AppDomain,在函数入口添加代码启动调试服务
appdomain.DebugService.StartDebugService(56000)
-
运行主工程(Unity工程)
-
在热更的VS工程中 点击 - 调试 - 附加到ILRuntime调试,注意使用一样的端口
- 如果使用VS2015的话需要
Visual Studio 2015 Update3
以上版本
线上项目和资料#
掌趣很多项目都是使用ILRuntime开发,并上线运营,比如:真红之刃,境·界 灵压对决,全民奇迹2,龙族世界,热血足球
初音未来:梦幻歌姬 使用补丁方式:https://github.com/wuxiongbin/XIL
本文流程图摘自:ILRuntime的QQ群的《ILRuntime热更框架.docx》(by a 704757217)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签