赞
踩
参考链接
Unity热更新那些事
一小时极速掌握ILRuntime热更新
一小时极速掌握HybridCLR热更新
执行:源码 -> 四个项目 -> 动态链接库(dll文件) -> CIL(通用汇编语言)
顺序:firstpass,Editor-firstpass->Editor,CSharp
动态链接库 | 对应 |
---|---|
Assembly-CSharp | 自己写的C#程序代码脚本 |
Assembly-CSharp-Editor | 编辑器相关脚本(需要创建“Editor”文件夹) |
Assembly-CSharp-Editor-firstpass | 编辑器插件 |
Assembly-CSharp-firstpass | 插件(需要创建“Plugins”文件夹) |
基本概念
跨平台原理
Mono虚拟机如何运行CIL
IL2CPP会在项目转成CIL之后,再把CIL转为CPP,然后在运行的时候把CPP加载进来,由各个平台的IL2PP VM转换为原生码
IL2CPP工作原理
使用IL2CPP开始构建时,Unity会自动执行以下步骤:
IL2CPP方式脚本编译流程
IL2CPP的优缺点
IOS平台热更的困境
总结:C#脚本限制
解决方案
采用解释执行语言,而非编译执行
ILRuntime项目为基于C#的平台(例如Unity)提供了一个纯C#实现,快速、方便且可靠的IL运行时,使得能够在不支持JIT的硬件环境(如iOS)能够实现代码的热更新
HybridCLR是一个特性完整、零成本、高性能、低内存的近乎完美的Unity全平台原生c#热更方案。
HybridCLR扩充了il2cpp的代码,使它由纯AOT runtime变成AOT+Interpreter 混合runtime,进而原生支持动态加载assembly,使得基于il2cpp backend打包的游戏不仅能在Android平台,也能在IOS、Consoles等限制了JIT的平台上高效地以AOT+interpreter混合模式执行,从底层彻底支持了热更新。
HybridCLR不仅支持传统的全解释执行模式,还开创性地实现了 Differential Hybrid Execution(DHE) 差分混合执行技术。即可以对AOT dll任意增删改,会智能地让变化或者新增的类和函数以interpreter模式运行,但未改动的类和函数以AOT方式运行,让热更新的游戏逻辑的运行性能基本达到原生AOT的水平。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。