Ylisar 发表于 2022-6-23 08:11

怎样选择Unity热更新方案?



[*] Lua脚本热更解决方案

[*]这里就不说Lua脚本热更方案有哪些具体的的插件了,因为市面上的Lua热更方案有好几种,比如XLua,ToLua,SLua等等,这些方案的差别其实并不大,原理都是利用Lua跟C#之间进行绑定
[*]就只是说一下Lua脚本热更解决方案的优缺点:
[*]优势:

[*]Lua这种方案是一个传统热更解决方案,它相对成熟,什么叫相对成熟呢?首先Lua的热更方案在传统的端游上已经用的非常成熟了,而且你可以找到从端游转过来的精通Lua的开发者。这里存在一个问题:现在很多的开发者都是开发手游出身,直接从端游转过来的开发者也不多了,所以Lua的优势在逐渐削弱
[*]还有就是Lua的技术比较成熟,有一些既有的项目资产,比如说我可能最早的一些热更方案都是用Lua做的,虽然现在Unity版本到了2021,但其实很多的项目还是用Lua作为脚本语言,我们直接把这些项目拿来改一改,就成了现在可以使用的方案

[*]所以Lua的优势就是有既有的项目资产,那么Lua有什么使用和学习的成本呢?

[*]1,需要学习Lua

[*]如果是公司团队要使用Lua,那么公司或团队在招聘时就要找懂Lua的程序员,自己用的话,就要自己学习Lua编程语言
[*]这是最高的成本,因为一般情况下,新手程序员不会同时精通C#和Lua,所以我们在进行项目拆分时,就要把它拆分成专门写脚本的和专门写底层的
[*]任何事情都不是天生就有的,而是由于技术限制,逐渐形成了相对应的解决方案,就是把开发者分成写逻辑的和写框架的

[*]2,额外开发Lua脚本框架

[*]仅仅掌握Lua还不够,Lua还对应了一套Lua层的脚本框架,这个脚本框架也是需要进行学习的,而且Lua框架是被Unity所调用的,如果不经过封装,直接调用里面的功能,那么很多时候程序都是不安全不稳定的

[*]3,开发时没有精确代码提示

[*]Lua是一门脚本语言,所以它并不知道Unity里有哪些类、有哪些方法、有哪些字段,所以你很难得到一个精确的代码提示,现在市面上已经有的Lua的代码提示工具,通常是通过上下文进行猜测,这样的效果很不好
[*]另外一个就是调试不太方便,现在市面上也有一些调试工具,但是调试时经常造成程序卡顿,并不好用

[*]4,需要配齐一套开发框架,一套对应的开发人员

[*]Lua作为一种传统的热更方案,咱们还是需要有一定掌握的,因为去面试时,万一他们就是用Lua的呢,现在用Lua的公司还是比较多的

[*] C#热更解决方案

[*]优点

[*]C#热更解决方案的优点在于:”C#热更方案已经加入了Unity的官方支持“,所以它最近两年的发展是非常迅速的,并且由于它直接使用C#进行脚本开发,招聘和学习成本也都比较低,如果不考虑框架的因素,就可以不做任何迁移,可以正常写C#的热更脚本
[*]另外一点就是,如果你之前有一些不支持热更的工程,那么你可以快速的迁移到用C#脚本热更
[*]还有一个好处就是开发和调试非常简单,几乎和原来写的原生Unity工程是一样的,普通的工程中的开发环境是VS、语言是C#,所有的代码都有精确且功能完备的代码提示,写起来非常顺手,所以这些功能优势都能够得到保留
[*]而且基于C#的ILRunTime的热更解决方案比较适合敏捷开发(现在最主流的开发方式就是敏捷开发),同时也便于快速上手,因为不需要太多的学习成本

[*]成本

[*]如果要使用C#的解决方案,那么至少需要熟悉下面几件事情

[*]1,ILRunTime虚拟器的原理

[*]最好能完整的阅读并且理解掌握它的底层源码实现
[*]有的同学会说:ILRUnTime不是有现成的官方教程吗?,官方教程是不错,但问题是:
[*]要看懂官方教程也是需要一定的开发功力的
[*]这就是熟悉和精通的区别,作为游戏公司的主程,你就是来解决问题的,所以掌握底层源码是非常重要的

[*]2,理解ILRunTime的插件原理

[*]插件原理包括
[*]MonoBehavior的适配
[*]跨域继承
[*]委托的适配
[*]CLR绑定等

[*]还有一些协程的适配、异步的适配,都是需要掌握的



详细内容可以参考我们的《皇室战争S3:双端热更商业方案》公开课
页: [1]
查看完整版本: 怎样选择Unity热更新方案?