PopLuaNumber
lua_settop
lua_getglobal
lua_gettop
在《游戏人工智能编程案例精粹》的6.3.4节“与C/C++接口”,我觉得讲的非常好,由于PDF版本无法复制,所以我键盘敲出来内容,如下:
C++和Lua分别使用不同的语法和数据类型工作,因此相互之间不可能直接“谈话”。你可以认为这种情况与两个遭遇船只失事的海盗分别飘到了两个相距很远的孤岛上一样。不管他们如何大声的呼喊,他们之间也不能直接对话。幸运的是,其中的一个海盗有一只能说会道名叫bernie的鹦鹉。Bernie可以记忆并重述他最近听到的话,他经常在两个小岛之间来回飞翔与寻找食物。海盗们很快意识到Bernie能够作为一个他们之间的通信手段。如果海盗1想到知道海盗2的名字,他可以对Bernie说:“老兄,你再那么?我对谁说话呢?”然后他开始等待bernie飞一个来货。当鹦鹉回来的时候,他会说出海盗2最后说的话:”我是黑胡子啊。啊哈,我在这儿呢。“
LUA和C++之间通过一个虚拟堆栈(virtual static)来相互通信,这就像两个海盗使用鹦鹉来传递他们之家呢对话一样。这个虚拟对战随着脚本的需要而增长和缩短。作为一个简洁的例子,让我们假设字符串”Caption Hook“已经赋值给了Lua脚本的Priate Name变量
Privates_Name = "Captain Hook"
..........我这里突然感觉这文章写的太好了,网上其他的教程都不如老外这个教程写的清楚。当然前提是你反反复复搞那么几遍,比如弄个小例子跑一跑啊,尽管有点迷迷糊糊,但是看了这个教程后,就渐渐明朗起来。我打算再读几遍。