一个近乎完美的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 -

      相关文章
      |
      7月前
      |
      搜索推荐 算法 C#
      【Unity 3D】C#中冒泡排序、选择排序、插入排序等算法的详解(附源码 超详细)
      【Unity 3D】C#中冒泡排序、选择排序、插入排序等算法的详解(附源码 超详细)
      128 1
      |
      1月前
      |
      设计模式 C# 图形学
      Unity 游戏引擎 C# 编程:一分钟浅谈
      本文介绍了在 Unity 游戏开发中使用 C# 的基础知识和常见问题。从 `MonoBehavior` 类的基础用法,到变量和属性的管理,再到空引用异常、资源管理和性能优化等常见问题的解决方法。文章还探讨了单例模式、事件系统和数据持久化等高级话题,旨在帮助开发者避免常见错误,提升游戏开发效率。
      51 4
      |
      3月前
      |
      图形学 iOS开发 Android开发
      从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
      【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
      160 0
      |
      4月前
      |
      开发者 图形学 API
      从零起步,深度揭秘:运用Unity引擎及网络编程技术,一步步搭建属于你的实时多人在线对战游戏平台——详尽指南与实战代码解析,带你轻松掌握网络化游戏开发的核心要领与最佳实践路径
      【8月更文挑战第31天】构建实时多人对战平台是技术与创意的结合。本文使用成熟的Unity游戏开发引擎,从零开始指导读者搭建简单的实时对战平台。内容涵盖网络架构设计、Unity网络API应用及客户端与服务器通信。首先,创建新项目并选择适合多人游戏的模板,使用推荐的网络传输层。接着,定义基本玩法,如2D多人射击游戏,创建角色预制件并添加Rigidbody2D组件。然后,引入网络身份组件以同步对象状态。通过示例代码展示玩家控制逻辑,包括移动和发射子弹功能。最后,设置服务器端逻辑,处理客户端连接和断开。本文帮助读者掌握构建Unity多人对战平台的核心知识,为进一步开发打下基础。
      156 0
      |
      4月前
      |
      开发者 图形学 iOS开发
      掌握Unity的跨平台部署与发布秘籍,让你的游戏作品在多个平台上大放异彩——从基础设置到高级优化,深入解析一站式游戏开发解决方案的每一个细节,带你领略高效发布流程的魅力所在
      【8月更文挑战第31天】跨平台游戏开发是当今游戏产业的热点,尤其在移动设备普及的背景下更为重要。作为领先的游戏开发引擎,Unity以其卓越的跨平台支持能力脱颖而出,能够将游戏轻松部署至iOS、Android、PC、Mac、Web及游戏主机等多个平台。本文通过杂文形式探讨Unity在各平台的部署与发布策略,并提供具体实例,涵盖项目设置、性能优化、打包流程及发布前准备等关键环节,助力开发者充分利用Unity的强大功能,实现多平台游戏开发。
      131 0
      |
      4月前
      |
      图形学 C# 开发者
      全面掌握Unity游戏开发核心技术:C#脚本编程从入门到精通——详解生命周期方法、事件处理与面向对象设计,助你打造高效稳定的互动娱乐体验
      【8月更文挑战第31天】Unity 是一款强大的游戏开发平台,支持多种编程语言,其中 C# 最为常用。本文介绍 C# 在 Unity 中的应用,涵盖脚本生命周期、常用函数、事件处理及面向对象编程等核心概念。通过具体示例,展示如何编写有效的 C# 脚本,包括 Start、Update 和 LateUpdate 等生命周期方法,以及碰撞检测和类继承等高级技巧,帮助开发者掌握 Unity 脚本编程基础,提升游戏开发效率。
      105 0
      |
      4月前
      |
      开发者 图形学 UED
      深度解析Unity游戏开发中的性能瓶颈与优化方案:从资源管理到代码执行,全方位提升你的游戏流畅度,让玩家体验飞跃性的顺滑——不止是技巧,更是艺术的追求
      【8月更文挑战第31天】《Unity性能优化实战:让你的游戏流畅如飞》详细介绍了Unity游戏性能优化的关键技巧,涵盖资源管理、代码优化、场景管理和内存管理等方面。通过具体示例,如纹理打包、异步加载、协程使用及LOD技术,帮助开发者打造高效流畅的游戏体验。文中提供了实用代码片段,助力减少内存消耗、提升渲染效率,确保游戏运行丝滑顺畅。性能优化是一个持续过程,需不断测试调整以达最佳效果。
      108 0
      |
      4月前
      |
      Apache 图形学
      WebGL☀️Unity WebGL适配到各平台的教程
      WebGL☀️Unity WebGL适配到各平台的教程
      |
      4月前
      |
      C# 图形学 数据安全/隐私保护
      Unity数据加密☀️ 二、使用Rider将C#代码生成DLL文件
      Unity数据加密☀️ 二、使用Rider将C#代码生成DLL文件
      |
      6月前
      |
      C# 图形学 C++
      使用vscode开发C#+unity没有代码提示问题
      使用vscode开发C#+unity没有代码提示问题
      97 0
      使用vscode开发C#+unity没有代码提示问题