UH4——ILRuntime热更新解决方案

前置知识:C#反射,Unity跨平台原理,热更新相关知识点,AB包上传下载

ILRuntime

ILRuntime项目为基于C#的平台(例如Unity)提供了一个纯C#实现,快速、方便且可靠的IL运行时,
ILRuntime使得能够在不支持JIT的硬件环境(如iOS)能够实现代码的热更新

ILRuntime首页:介绍 — ILRuntime (ourpalm.github.io)

ILRuntimeGithub:Ourpalm/ILRuntime (github.com)

本系列学习内容

  • 环境搭建和开发方式

  • Unity调用ILRuntime

    • Unity中启动ILRuntime

    • 实例化ILRuntime中对象​

    • 调用ILRuntime中类对象属性

    • 调用ILRuntime中方法

      • 静态方法调用
      • 成员方法调用
      • 重载方法调用
      • ​ref / out 方法调用
  • ILRuntime调用Unity

  • 更多跨域调用

    • 委托调用

    • 跨域继承Unity中的类

      • 跨域继承Unity中的类的注意事项
    • CLR重定向和CLR绑定

    • 值类型绑定

    • MonoBehaviour

    • 协同程序和异步函数

    • Unity反射调用ILRuntime

    • 序列化库

  • 调试相关

  • 性能相关

    • 寄存器模式
    • 性能优化相关
  • 原理相关

    • 基本原理
    • 类型系统
    • 解释器
    • 重定向的书写规则

强调ILRuntime和Lua热更的原理

ILRuntime和Lua热更解决方案,都是利用解释器(类似虚拟机的存在)
将DLL文件中的IL中间代码(或Lua脚本)基于自己实现的类型系统进行翻译执行
他们的原理有点类似 数据持久化中的反序列化,将2进制数据反序列化为我们想要的数据结构后进行逻辑处理

我们应该达到的水平

能正常使用ILRuntime结合Unity进行项目开发,需要熟练掌握:

  1. 环境搭建
  2. Unity和ILRuntime之间的跨域调用相关
  3. 能够调试ILRuntime项目
  4. 对ILRuntime的基本原理有基本的认识

实践思考

为了方便日常开发,我们应该在项目中分为开发模式和发布模式两种
开发模式:一键打包或不用打包,提升开发效率
发布模式:始终需要打包,模拟热更流程