【学习笔记】从零开始学ToLua(一) Lua入门

热更新

学习Lua之前我们应该首先了解一下我们在游戏编程中使用Lua的目的:热更新。

热更新是一种手游及App常用的更新方式,举例来说,游戏上线后,玩家需要通过应用商店及其他渠道下载第一个版本。在运营的过程中,如游戏需要更换UI、修改逻辑、开放功能等,此时若不使用热更新技术,就需要重新打包,那么玩家也就需要通过应用商店或其他渠道重新下载游戏。 热更新可以在不重新下载客户端的情况下,更新游戏的内容。

在unity中,主要的热更新方式有如下三种:

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

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

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

参考资料 https://zhuanlan.zhihu.com/p/42472089知乎 @朔宇 

 

什么是Lua

  • 一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
  • 可以直接在应用程序内运行,运行时编译,因此我们可以在游戏启动时加载服务器上最新的lua字节码来执行游戏。
  • 具体Lua的语法与安装可以在菜鸟教程-Lua里进行快速的入门。

 

相关的准备工作

  • 编译器

网上看到的是大部分人使用emmylua,VS,SubLime,还有一些特殊的编译器。我在这里选择的VsCode+Lua插件+LuaT代码补全。

  • 游戏内新建Lua脚本模板

可以参考这篇文章中的方法。http://www.xuanyusong.com/archives/3732  @雨松MOMO

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值