Lua - 开篇前言

热更新是一种手游及App常用的更新方式,举例来说,游戏上线后,玩家需要通过应用商店及其他渠道下载第一个版本。在运营的过程中,如游戏需要更换UI、修改逻辑、开放功能等,此时若不使用热更新技术,就需要重新打包,那么玩家也就需要通过应用商店或其他渠道重新下载游戏。 热更新可以在不重新下载客户端的情况下,更新游戏的内容。
然而c#是一门编译型语言,其运行之前需要进行编译,而编译的过程在移动平台无法完成,所以当我们游戏的逻辑更改,代码发生变化时,我们就需要重新在开发环境下编译,然后重新打包,让玩家下载最新版本。这个过程中,会下载很多不需要更新的资源,便会增加玩家的时间及流量消耗,造成不好的用户体验。因此在移动平台中便就出现了热更新技术。

Lua热更新主要由三部分组成:
1、C# 与 Lua 的互相调用机制;
2、Lua 文件的打包;
3、网络传输,校验。

在 Unity 中,主要在热更新在以下的三种:
一、使用Lua编写游戏逻辑
Lua是一个小巧的脚本语言,由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。
使用lua热更新就是在Unity环境里内嵌一个lua虚拟机,经常变动的和对执行效率没要求的逻辑用Lua实现,游戏启动时加载服务器上最新的lua字节码来执行游戏。lua代码都是运行时才编译的,不运行的时候就如同一张图片、一段音频一样,都是文件资源;所以更新逻辑只需要更新脚本,不需要再编译,因而lua能轻松实现“热更新”。
其实诸如python,javascript等脚本语言的话,都是可以实现这个功能的。只不是目前几个开源的、成熟的热更新方案都是基于lua的。

二、C#Light
C#Light是一个简单的嵌入式脚本,模仿c#的语法风格,完全由pure c#写成

三、C#反射技术
可以将部分逻辑提取至一个单独的代码库工程中,打包为DLL,将DLL打包为AssetBundle,Unity程序动态加载AssetBundle中的DLL文件,使用反射机制来调用代码。用C#反射加载程序集的方式可以动态的从assetBundle资源包或其他资源包里加载脚本到工程中。但因为苹果官方禁止iOS下的程序热更新,JIT在iOS下无效,所以这种方式无法在ios使用

在Unity的lua热更新中,有ulua、slua、xlua、tolua等多种热更新方案,这些方案提供了C#与Lua的互相调用机制。

Lua 的应用场景:
游戏(手游、端游)开发(VR、AR)、工业级应用程序(Adobe Photoshop)、嵌入式设备和智能移动设备,Web 应用等
使用 Lua 语言开发的游戏: 王者荣耀、12306 等等

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值