一个近乎完美的Unity全平台原生c#热更方案

简介: HybridCLR是一个特性完整、零成本、高性能、低内存的近乎完美的Unity全平台原生c#热更方案。

 今天给大家推荐一个近乎完美的Unity全平台原生c#热更方案,相对比其他方案,此方案学习成本更低、完全支持c#所有特性、兼容性极高、占用内存低、执行小高。

 

项目简介

HybridCLR是一个特性完整、零成本、高性能、低内存的近乎完美的Unity全平台原生c#热更方案。

HybridCLR扩充了il2cpp的代码,使它由纯AOT runtime变成‘AOT+Interpreter’ 混合runtime,进而原生支持动态加载assembly,使得基于il2cpp backend打包的游戏不仅能在Android平台,也能在IOS、Consoles等限制了JIT的平台上高效地以AOT+interpreter混合模式执行。从底层彻底支持了热更新。

项目特点

    • 特性完整。近乎完整实现了ECMA-335规范,除了 下文中"限制和注意事项" 之外的特性都支持。
    • 零学习和使用成本。HybridCLR将纯AOT runtime增强为完整的runtime,使得热更新代码与AOT代码无缝工作。脚本类与AOT类在同一个运行时内,可以随意写继承、反射、多线程(volatile、ThreadStatic、Task、async)之类的代码。不需要额外写任何特殊代码、没有代码生成,也没有什么特殊限制。
    • 执行高效。实现了一个极其高效的寄存器解释器,所有指标都大幅优于其他热更新方案。性能测试报告
    • 内存高效。热更新脚本中定义的类跟普通c#类占用一样的内存空间,远优于其他热更新方案。内存占用报告
    • 原生支持hotfix修复AOT部分代码。几乎不增加任何开发和运行开销。
    • 兼容性:支持所有il2cpp支持的平台。
    • 稳定性:目前已经接入上百个大中小商业游戏项目。

    工作原理

    HybridCLR从mono的hybrid mode execution技术中得到启发,为unity的il2cpp之类的AOT runtime额外提供了interpreter模块,将它们由纯AOT运行时改造为"AOT + Interpreter"混合运行方式。

    image.gif

    更具体地说,HybridCLR做了以下几点工作:

      • 实现了一个高效的元数据(dll)解析库
      • 改造了元数据管理模块,实现了元数据的动态注册
      • 实现了一个IL指令集到自定义的寄存器指令集的compiler
      • 实现了一个高效的寄存器解释器
      • 额外提供大量的instinct函数,提升解释器性能
      • 提供hotfix AOT的支持

      项目地址:https://github.com/focus-creative-games/hybridclr

      - End -

      相关文章
      |
      3月前
      |
      存储 C# 图形学
      【Unity 3D】C#数据类型和变量、命名规范的讲解(附源码)
      【Unity 3D】C#数据类型和变量、命名规范的讲解(附源码)
      114 1
      |
      3月前
      |
      存储 人工智能 C#
      【Unity 3D】C#中数组、集合、栈、队列、哈希表、字典的讲解(附测试代码)
      【Unity 3D】C#中数组、集合、栈、队列、哈希表、字典的讲解(附测试代码)
      61 0
      |
      3月前
      |
      搜索推荐 算法 C#
      【Unity 3D】C#中冒泡排序、选择排序、插入排序等算法的详解(附源码 超详细)
      【Unity 3D】C#中冒泡排序、选择排序、插入排序等算法的详解(附源码 超详细)
      82 1
      |
      3月前
      |
      程序员 C# 图形学
      【Unity 3D】C#中条件语句if else switch的讲解
      【Unity 3D】C#中条件语句if else switch的讲解
      107 1
      |
      5天前
      |
      C# 图形学 数据安全/隐私保护
      Unity数据加密☀️ 二、使用Rider将C#代码生成DLL文件
      Unity数据加密☀️ 二、使用Rider将C#代码生成DLL文件
      |
      2月前
      |
      C# 图形学 C++
      使用vscode开发C#+unity没有代码提示问题
      使用vscode开发C#+unity没有代码提示问题
      33 0
      使用vscode开发C#+unity没有代码提示问题
      |
      2月前
      |
      JavaScript 前端开发 C#
      初识Unity——创建代码、场景以及五个常用面板(创建C#代码、打开代码文件、场景的创建、Project、Hierarchy、Inspector、Scene、Game )
      初识Unity——创建代码、场景以及五个常用面板(创建C#代码、打开代码文件、场景的创建、Project、Hierarchy、Inspector、Scene、Game )
      39 0
      |
      3月前
      |
      图形学
      【Unity C#_菜单Window开发系列_Inspector Component UnityEditor开发】
      【Unity C#_菜单Window开发系列_Inspector Component UnityEditor开发】
      |
      3月前
      |
      定位技术 C# 图形学
      Unity和C#游戏编程入门:创建迷宫小球游戏示例
      Unity和C#游戏编程入门:创建迷宫小球游戏示例
      118 2
      |
      3月前
      |
      C# 图形学
      【Unity 3D】C#控制语句break、continue及算数运算符和逻辑运算符的讲解(附测试代码)
      【Unity 3D】C#控制语句break、continue及算数运算符和逻辑运算符的讲解(附测试代码)
      48 1