ILRuntime入门笔记

基础知识

官方文档: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启动调试

  1. ILRuntime建议全局只创建一个AppDomain,在函数入口添加代码启动调试服务
appdomain.DebugService.StartDebugService(56000)
  1. 运行主工程(Unity工程)

  2. 在热更的VS工程中 点击 - 调试 - 附加到ILRuntime调试,注意使用一样的端口

  • 如果使用VS2015的话需要Visual Studio 2015 Update3以上版本

线上项目和资料

掌趣很多项目都是使用ILRuntime开发,并上线运营,比如:真红之刃,境·界 灵压对决,全民奇迹2,龙族世界,热血足球

初音未来:梦幻歌姬 使用补丁方式:https://github.com/wuxiongbin/XIL

本文流程图摘自:ILRuntime的QQ群的《ILRuntime热更框架.docx》(by a 704757217)

Unity实现c#热更新方案探究(三)

posted @ 2019-01-17 10:37  赵青青  阅读(19286)  评论(5编辑  收藏  举报