Lua学习笔记(一)

本文是Lua学习笔记的第一部分,介绍了Lua的基本概念,如作为热更新框架的用途、基础语法,尤其是表和元表的特性。Lua中的表结合了数组和字典,支持数字和字符串索引,而元表则涉及__index、__newindex等操作。此外,文章还探讨了Lua的面向对象特性,包括封装、继承、多态和抽象的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.先来说说什么是lua

我们重点谈谈为什么要学lua
目前lua的主要应用有
  1. 游戏方面的热更新框架,由于lua属于脚本语言,说起脚本语言你可能会想到JavaScript,没错,最大的特点就是不用发布时一起拿去编译,而是在用户使用时直接渲染,对于lua来说就是直接调用,那么我们再来想想,一般我们的手机游戏是不是经常更新?更新的时候为什么只是下载几m的数据而不是要求玩家把整个游戏安装包下载下了再覆盖(当然有的时候也存在要求玩家去下载整个包,那种情况是有重大变化的更新,属于架构层面的问题,我们这里不深入谈,大部分情况都是在游戏内进行热更新)。那我们换个思路想,是不是除了lua其他语言就不行呢?当然,条条大路通罗马,只是效率不一样而已,比如我一样可以把程序拆分成很多个dll,每次检查更新dll只是这样导致整个架构混乱,而且效率低下。当然现在做热更新用的肯定不是原生的lua,不过我们学习当然要从基本学起,以后的事情以后再说。
  2. 除了热更新,其他比如演算动画,剧本,角色数据等这些经常改动的东西也可以用lua来写,你想,我们做了个3d的rpg游戏,然后里面有句台词我们不满意要改,难道还要把整个客户端都重新编译一下嘛?有点夸张,不过意思大家都懂。
  3. 游戏之外,lua可以和大部分编程语言混合使用,结合lua轻便,随性,方便扩展的特点,可以轻松做到写插件,web脚本,应用扩展等等优点。
其次,比起大部分编程语言,lua的学习成本很低,语言风格随意,而且又可以辅助其他编程语言进行开发,可以说是性价比最高的语言之一,所以不管是不是从事游戏相关行业,学习lua还是很有必要的。

二.开始lua之旅

废话这么多,让我们直接开始,先让我们搭建开发环境
lua和java一样是有专门的虚拟机的,我们称之为LVM,LVM是基于 堆栈的结构,或者说整个lua语言底层非常依赖 栈,基于堆栈有什么好处?稍稍了解过cil的同学肯定想到了,与cpu啊系统啊这些统统无关(废话么,本来就是虚拟机)( ̄▽ ̄)~*
关于环境安装请看里面相当详细了,基本是一站式服务,顺带还装上了ide
基本语法大部分都和c差不多吧,我这里就不废话, 不然就成话痨了,下面开始上干货

三.Lua基础语法难点,疑点

  1. lua中nil表示无,类似于null,但某变量a不用时直接a=nil即可,gc会自动回收
  2. lua中默认变量为全局变量,局部变量请加上local
  3. lua中的表类似数组和字典的结合体,既可以用数字索引a[1],也可以用字符串索引a[key],当索引不存在时,返回nil
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值