【木头Cocos2d-x 026】Lua篇(第01章):让Lua和C++牵手

网上关于Lua的教程似乎还没有泛滥,最近刚好学习在Cocos2d-x使用Lua,当然了,我是写教程狂,我会分享我的学习心得的~

(旁白:我噗~!每次你写东西我就要吐槽,你不累么= =)

这是第一课,先来让Lua和C++认识一下,顺便让它们逛街吃饭牵小手什么的...

(旁白:。。。吹,继续吹)

注:本系列教程部分内容参考《游戏人工智能编程 案例精粹》一书。

笨木头花心贡献,啥?花心?不呢,是用心~

转载请注明,原文地址:http://blog.csdn.net/musicvs/article/details/8440707

正文:

1. Lua的堆栈和全局表

我们来简单解释一下Lua的堆栈和全局表,堆栈大家应该会比较熟悉,它主要是用来让C++和Lua通信的,是的,它们并不认识对方,只能通过堆栈来沟通,就像写信一样。

(旁白:它们不会用微信吗?!微信~!不知道?)

Lua的全局表又是什么呢?可以想象成是一个map哈希表结构,比如Lua有一个变量:

name = “hello”

那么,全局表就存放了”name”和”hello”的对应关系,Lua可以通过name在全局表中查找到hello。应该是这样的~

(旁白:应该= =!)

2. Lua和C++的第一次通信

现在来设计一个场景,C++在一次JavaScript开发者大会上看到Lua在演讲,于是C++被Lua深深吸引了。

(旁白:JavaScript大会...那为毛是Lua在演讲~!)

我们来看看这位美丽的Lua小姐长什么样:

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

OK,一位简单又美丽Lua小姐。

然后,C++想知道Lua叫什么名字,所以,它们必须要通信了。来看看通信流程:

请注意红色数字,代表通信顺序:

1) C++想获取Lua的myName字符串的值,所以它把myName放到Lua堆栈(栈顶),以便Lua能看到

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

3) Lua拿着这个myName去Lua全局表查找myName对应的字符串

4) 全局表返回一个字符串”beauty girl”

5) Lua把取得的“beauty girl”字符串放到堆栈(栈顶)

6) C++可以从Lua堆栈中取得“beauty girl”,也就是这位美丽的Lua小姐的名字了~

世界如此美妙,这是如此的简单。

(旁白:好吧,这次不吐槽,确实简单...)

不过,(旁白:我就知道~!我就知道事情没有那么简单!)这只是最简单的情况,实际上各种C++和Lua的操作比这要复杂多了,但基本原理是一样的。

好的,趁着旁白还没有吐槽,我们要结束第一章了,希望能帮到大家。

(旁白:说得好像我好喜欢抢戏似的,我像这样的人吗?= = 等等~!例子呢?Demo呢?)

噢,Demo将在下一章介绍。

(旁白:吊胃口。。。绝对是在吊胃口...你以为我会期待吗,魂淡...心好痒~!)

.

.

【木头Cocos2d-x 026】Lua篇(第01章):让Lua和C++牵手相关推荐

  1. 【木头Cocos2d-x 028】Lua篇(第03章):简单解析Lua的堆栈

    [木头Cocos2d-x]Lua篇(第03章):简单解析Lua的堆栈 上一章传送门:http://blog.csdn.net/musicvs/article/details/8440919 经过上一章 ...

  2. 【木头Cocos2d-x 029】Lua篇(第04章):来点高难度的,获取Lua表结构数据

    [木头Cocos2d-x 029]Lua篇(第04章):来点高难度的,获取Lua表结构数据 只是获取一个全局变量什么的太没意思了,今天我们来玩个高难度的--获取Lua表结构的数据. (旁白:O O!我 ...

  3. 【OpenCV 例程200篇】01. 图像的读取(cv2.imread)

    [OpenCV 例程200篇]01. 图像的读取(cv2.imread) 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新 ...

  4. CE修改Eternium永恒之金【LUA篇】

    CE修改Eternium永恒之金[LUA篇] 目录 CE修改Eternium永恒之金[LUA篇] 一.加密分析 二.使用LUA直接修改数据 1. 找到加密数值的地址 2. 使用CE运行LUA脚本 3. ...

  5. 小何同学的leetcode刷题笔记 基础篇(01)整数反转

    小何同学的leetcode刷题笔记 基础篇(01)整数反转[07] *** [01]数学取余法*** 对数字进行数位操作时,常见的方法便是用取余的方法提取出各位数字,再进行操作 操作(1):对10取余 ...

  6. 高数篇:01函数的中值定理

    高数篇:01函数的中值定理 高数篇:01函数的中值定理 十大中值定理 有关函数的中值定理 定理3:平均值(离散)定理 定理10:积分中值(连续)定理 定理3和10的区别 转载需注明出处 高数篇:01函 ...

  7. luajit集成篇/平台相关篇 | 合理用好lua+unity,更省性能的方案整理

    luajit集成篇 大家都知道luajit比原生lua快,快在jit这三个字上. 但实际情况是,luajit的行为十分复杂.尤其jit并不是一个简单的把代码翻译成机器码的机制,背后有很多会影响性能的因 ...

  8. 【游戏客户端面试题干货】--2021年最新游戏客户端面试干货(lua篇)

      [游戏客户端面试题干货]-- 2021年度最新游戏客户端面试干货(lua篇)     大家好,我是Lampard~~   经过春招一番艰苦奋战之后,我终于是进入了心仪的公司.   今天给大家分享一 ...

  9. 【游戏客户端与服务器面试题】-- 2022年最新游戏客户端与服务器面试(lua篇持续更新)

    [游戏客户端与服务器面试题干货]-- 2022年度最新游戏客户端面试干货(lua篇) 文章目录 一.Lua的8种数据类型 (1) nil 类型 (2) boolean类型 (3) number类型 1 ...

最新文章

  1. 嬴彻科技拿下SemanticKITTI榜单两项第一
  2. linux ll以编码格式_【系列】每天一个 Linux 命令(5):rm 命令
  3. 高级浏览器-SRWare Iron 29.0.1600.0 版本发布
  4. 【RK3399Pro学习笔记】六、ROS发布者Publisher的编程实现
  5. UVAL - 6755 - Swyper Keyboard
  6. python 分类 投票_LightGBM——提升机器算法(图解+理论+安装方法+python代码)
  7. easyexcel导入时读不到数据_easyexcel读取任意表格以及使用中的坑
  8. 盖得化工--selenium翻页测试
  9. android java service_[Java教程]Android四大组件之Service浅见
  10. SWJTU 2208 最大覆盖
  11. 以太坊系列之十四: solidity特殊函数
  12. C程序设计--排序(冒泡、选择、插入)--冒泡
  13. noseunittestpytest
  14. 定位“良心优品”,国民手机Z5能否让联想重回辉煌?
  15. 3G终端变局:安卓崛起 联通高调摆脱苹果
  16. xy苹果助手未受信任_【安全问题】关于苹果信任问题
  17. 苹果cms播放器不能全屏播放解决方法
  18. APUE:fork()、exec()前用fflush()刷新缓冲区的重要性
  19. [2019红帽杯]easyRE1题解
  20. 跟着SY速学Ubuntu系列一:作为程序员,安装Ubuntu后我做的事情。

热门文章

  1. usb扫描枪驱动下载 wince_wince下USB设备驱动程序
  2. linux网卡汇聚模式,Linux网卡聚合 linux多网卡绑定聚合之bond模式原理
  3. (翻译)导航栏按钮的5类常见设计错误
  4. 手握13本书、老司机超出120年经验的公众号
  5. Hadoop入门及常用组件介绍
  6. 清华应届程序员同时被5家公司录取,晒出工资,网友:羡慕
  7. 民营企业如何设置绩效考核指标的标准
  8. 俞敏洪大学经典励志演讲:像树一样活着
  9. 模糊测试+符号执行等漏洞挖掘工具安装使用
  10. php开发API接口的代码案例