做游戏离不开热更新,目前市面上热更新方案用的比较多的是Lua(XLua,ToLua),最近又出现了基于C#的热更新 huatuo(已改名HybridCLR又叫wolong)。来不及学习了,以后用到了再去了解吧。 笔者入行做的第一个项目是利用ILRuntime进行热更新的,当时也是用的稀里糊涂的,一些坑点都是项目主程去解决的。这里做一个简单的回顾。 1.官方简介 ILRuntime项目为基于C#的平台(例如Unity)提供了一个纯C#实现,快速、方便且可靠的IL运行时,使得能够在不支持JIT的硬件环境(如iOS)能够实现代码的热更新。 2.实现原理 ILRuntime借助Mono.Cecil库来读取DLL的PE信息,以及当中类型的所有信息,最终得到方法的IL汇编码,然后通过内置的IL解译执行虚拟机来执行DLL中的代码来实现热更新功能。 查看ILRuntime源码你会发现,内部有一个很大的switch/case结构,就是针对基本上每一条IL指令码进行解释,同时维护一个Stackframe用于模拟cpu的函数调用的基本操作进行辅助解释。...