• 一个近乎完美的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"混合运行方式。

    图片

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

    • 实现了一个高效的元数据(dll)解析库

    • 改造了元数据管理模块,实现了元数据的动态注册

    • 实现了一个IL指令集到自定义的寄存器指令集的compiler

    • 实现了一个高效的寄存器解释器

    • 额外提供大量的instinct函数,提升解释器性能

    • 提供hotfix AOT的支持

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

    - End -

     

  • 相关阅读:
    JS-Dom转为图片,并放入pdf中进行下载
    【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(三)
    Liunx-03用户、组、权限管理
    【Java多线程】必须要了解的基本概念
    【软件安装】Windows系统中使用miniserve搭建一个文件服务器
    leetcode234 回文链表
    vue2中使用ueditor百度富文本,并支持插入公式
    Python语法
    springboot基于java的校园二手书籍交易平台毕业设计源码131558
    论文速览 | IEEE Signal Processing Letters, 2024 | 基于时空上下文学习的事件相机立体深度估计
  • 原文地址:https://blog.csdn.net/daremeself/article/details/126857343