C#热更新比Lua好在哪里?
大家好!在上期分享当中,给大家科普了一下,为什么游戏需要热更新?简而言之就是:热更新可以只下载一部分更新内容,而无需重新下
载整个游戏APP,提升了玩家的体验。
但是由于手机操作系统的限制,特别是苹果IOS的限制。手机操作系统通常不能直接支持热更新,所以就需要我们想办法去绕过这个限制。
那么作为一名游戏开发者,我们具体该如何做呢?
在这里有两种方案可供选择:
- 使用基于传统的Lua的热更新方案
- 采用基于C sharp的热更方案
我们先来说第1种,如果我们采用基于Lua的热更新新方案。那么不管你是用基于IOS系统的苹果手机还是用安卓手机
为了绕过限制,你都必须首先将你需要热更新的程序代码转换成对应的Lua语言脚本,然后由该虚拟机负责执行该脚本。
所以采用这种方式进行热更有三个弊端:
-
开发者需要学习除了C#以外的另一门开发语言Lua 。
-
开发公司为了招到既懂unity引擎使用的C sharp语言,又懂Lua语言的开发者,招聘成本大大提高。
-
为了绕过这个限制,开发时要增加了Lua虚拟机来执行Lua脚本,这增加了一层从Unity的C#脚本到Lua脚本的转换开销,所以从理论上来说,采用Lua脚本来运行程序代码的执行效率是不可能比直接在Unity引擎中直接执行C#程序来的高的。
如果我们使用C sharp热跟就不一样了:
-
首先,你不需要学一门新的编程语言
-
其次,由于安卓系统没有限制执行热更新代码,所以我们完全可以在安卓系统上使用C#反射热更。由于安卓系统没有了从引擎层转脚本层的开销,因此,安卓代码可以获得如同直接执行unity C#脚本一样的效率;
-
第三,对于iOS系统,可以使用一种基于C#的脚本热更新方案,它叫ILRuntime ,据统计,在正确设置的情况下,ILRuntime和Lua的运行效率是相当的,而ILRuntime的开发效率则更高;
-
第四,ILRuntime热更新方案是unity官方主推的在iOS系统上的热更新方案,所以未来会受到unity官方更多的支持,发展也会更加迅速。
那么Lua和C#我们该如何取舍呢?
Lua难道就一点竞争优势都没有了吗?我们说也不是这样的。
由于Lua发展时间久远,所以Lua的积淀会更加丰富。
而ILRuntime,我们只要学习它的开发框架即可用在项目中,开发和调试的效率都比Lua方便的多。
所以对于开发者来说,同时学习这两种脚本热更方案是最佳的选择。这样可以帮助你迅速的提升职场竞争力。由于热更新是游戏开发中一个非常重要的技能,所以说通过学习这两种热更新方案,也可以使你更快的从普通开发者晋升游戏公司主程,带团队进行项目开发。
由于Lua已经是一个处于维护期的热更新方案,我们就不再赘述了。
ILRuntime具体该如何学习?
首先,我们要深入理解并掌握基于ILRuntime的热更新架构设计,以及ILRuntime热更脚本和unity原生脚本的双向交互。这块可以通过对
ILRuntime的源码分析来掌握。
其次,由于我们在理解上的偏差,我们可能在第1次使用ILRuntime的时候会遇到一些所谓的坑点。那么如何避免踩坑呢?这里我们就需要学习一些ILRuntime的使用经验。
第三,前面我们说了ILRuntime可以实现高效的开发和调试,包括反射热更和脚本热更的双模式支持,那么我们如何去打造一个高效开发的工作流呢?
这一点需要我们通过学习商业项目来真正的掌握,而不是仅仅去看一些演示级别的玩具代码。
今天的好,今天的分享就到这里,最后欢迎大家关注我们的《Unity全栈开发大师》,Lua、ILRuntime双修~
更多学习资源请加QQ:1517069595获取(/企业级性能优化/热更新/Shader特效/服务器/商业项目实战/每周直播/一对一指导)
完整视频可以点击B站链接:https://www.bilibili.com/video/BV1k54y1n7Rp