找回密码
 立即注册
查看: 147|回复: 2

HybridCLR相较于传统热更方案有什么区别?

[复制链接]
发表于 2024-7-15 17:37 | 显示全部楼层 |阅读模式
HybridCLR相较于传统热更方案有什么区别?
发表于 2024-7-15 17:37 | 显示全部楼层
可热更的代码的范围对比


新版本的性能与老版本热更



哪种方案更符合开发者的开发习惯

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2024-7-15 17:38 | 显示全部楼层


  • 语言/虚拟机

    • 上图中比较了三种热更新方案,ToLua和Xlua都是基于Lua的热更新方案,在端游时代经常会使用Lua做脚本热更新的方案,在手游时代出现了ILRuntime热更新方案,现在又出现了Hybrid热更新方案
    • 传统的热更新方案,不管是ToLua还是Xlua方案,都是基于另外一门编程语言,比如你在学习Unity时会用到的编程语言是C#,如果你要想用Lua进行热更新,那么你还要再去学一门Lua编程语言
    • 但是在端游的时代大家都觉得这个方案很高效,因为端游时代的底层一般是基于C++的,C++本来就没有那么多性能问题,不像C#,很多同学使用C#开发服务器时,如果一开始只是开发一个规模小点的项目,那还没关系,但开发的规模大了以后C#就会出现性能问题
    • 所以用C++跟Lua交互是没有问题的,但在Unity里,由于C#跟Lua是两套不同的机制,所以存在双向交互的开销,这个交互开销是由语言的内存模型不同造成的
    • 为了降低学习成本,就出现了ILRuntime热更方案,ILRuntime基于C#编程语言,它的好处就是你不再需要从头学习Lua,可以直接基于C#进行编程
    • 但是ILRuntime也有一些缺点,ILRuntime跟Lua一样都有自己的虚拟机环境,它们都会用虚拟机解释Lua或C#的指令,正是由于这个虚拟机的存在,造成了不管是Lua还是C#,它们的语言翻译成机器指令后都需要由专门的虚拟机解释,然后再去跟Unity的原生执行环境进行双向交互,这样就造成了交互开销,所以在ILRuntime之后又提出了一个新的热更新方案,也就是HybridCLR
    • HybridCLR没有虚拟机,这是它与传统热更新方案最本质的区别,也正是由于它没有虚拟机,所以它没有虚拟机之间进行双向数据交互的CPU和内存开销,这是HybridCLR在性能上的一个好处

  • 学习曲线

    • 由于Xlua和ToLua都是基于Lua语言的,而Lua语言是一种弱类型的语言,所以没办法得到精确的代码提示,网上虽然有一些能够提供代码提示的工具,但是这些工具都是基于原生语言的解析,它本身的代码提示也不是特别精确,并且你除了要学习Lua语言外,还需要学习基于Lua的面向对象、Lua的编程框架
    • 这些东西其实都是为了使用Lua而增加的额外负担,所以更精简的方案就是使用ILRuntime,再精简一点就使用HybridCLR,ILRuntime还有一个问题就是虽然语言上统一了,但由于ILRuntime本身也是有自己的虚拟机的,所以ILRuntime的数据类型其实并不统一,需要对一些特殊情况进行适配,比如一些泛型、代理、继承,这些语法特性是需要专门进行适配的
    • HybridCLR不需要做任何适配,也不需要额外学习编程语言,它的底层机制是修改了Unity的一部分源码,所以是无感透明的

  • 性能方面

    • ToLua和XLua的性能是比较低的,ILRuntime的性能相对要好一些,HybridCLR由于没有虚拟机,所以性能也会高一点

  • 成熟度

    • 在端游时代,用ToLua和Xlua的比较多,但如果你到现在还在学习ToLua或者Xlua热更新,那么你的项目可能是一些比较传统的项目,就比如国内的一些MMORPG游戏,这些游戏大多都是从端游时代移植过来的,所以这部分游戏的主流热更新方案就是Lua
    • ILRuntime是有Unity官方支持的,虽然HybridCLR是一个新的热更方案,但据官方描述,它并没有太大的问题,并且也正在接入一些商业项目

详细内容可以参考下方完整视频

一小时极速掌握HybridCLR热更新
https://www.zhihu.com/video/1541504230950486016

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-22 02:15 , Processed in 0.103127 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表