【走进Lua的世界之一】初识Lua

1. What is Lua?


Lua是什么呢?

官网给出的答案是:Lua is a powerful, fast, lightweight, embeddable scripting language.

相信是个攻城狮都看得懂吧,哈哈,就不用我解释啦。

Lua最大的优势在于,不用重新编译项目就可以修改游戏逻辑,大大缩短开发过程。


2. lua的堆栈和全局表


相信懂编程的人,对堆栈都不会陌生吧。lua的堆栈主要是用来让C++和lua通信的。它们并不认识彼此,只能用堆栈的方式来沟通。

lua的全局表就像一个map哈希表结构。例如lua有一个变量:name="facebook"。那么,全局表就存放了“name”和“facebook”的对应关系,因此lua就可以通过name在全局表中查找到facebook。


3. lua和C++的通信原理


我们来看一个简单的lua长什么样子。

-- hello.lua 文件
myName="beautiful girl"

现在假设一个场景,如果C++想知道这位lua叫什么名字的话,它们这时候就得通信了。让我们来看看通信的具体流程,如下图:



亲,图中的红色数字很重要哦,代表着通信顺序:

(1)C++想获取lua的myName字符串的值,所以它把myName放到lua堆栈(栈顶),这样就可以让lua看到了。

(2)lua从堆栈(栈顶)中获取myName,此时栈顶再次变为空。

(3)此时lua拿着这个myName去lua的全局表中查找myName对应的字符串。

(4)全局表根据myName返回一个字符串“beautiful girl”。

(5)lua把取得的“beautiful girl”字符串放到堆栈(栈顶)。

(6)C++可以从lua堆栈中取得“beautiful girl”,也就得到了这位美丽的lua小姐的名字。

这就是Lua和C++通信最简单的情况了,但基本原理都是一样的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值