Hexococos2dx 3.0 ---- Lua 2014-11-22
之前一直是用C/C++写代码,lua嘛,东弄弄西搞搞,也看了许多乱七八糟的东西。
介绍
先看一段LuaTest
的项目中AppDelegate
的一段代码
1 | AppDelegate::applicationDidFinishLaunching() |
看了Lua项目的AppDelegate也自然会对Lua有了初步的了解。接下来,我们看看和Lua相关的一些文件。
1 | cocos/2d/script-support/CCScriptSupport.h |
- 所有
lua_
开头的.h
和.cpp
文件都是将本地方法绑定注册到lua的,这些一组组的就是一个一个模块撒。
这些文件都是python文件生成的,具体可见项目LUAPROJ/frameworks/cocos2d-x/tools/
PS : 可见 LuaStack::init() - 值得注意的是
platform
文件夹下的CCLuaXXXXBridge
,这些文件实则大大方便了我们添加自定义本地方法(cpp中的函数)到lua中。 CCLuaBridge
CCLuaStack
CCLuaValue
CCLuaEngine
这几个则是对lua的lua_isXXXXX
,lua_toXXXX
,lua_pushXXXX
等一些API进行二次封装。
lua – c库
lua.h
lauxlib.h – 辅助库
cocos2dx中绑定c++函数
先贴上一些文章:
Cocos2d-x下Lua调用自定义C++类和函数的最佳实践
cocos2dx 2.x – tolua++
- 需要根据.h编写.pkg文件和一份桥接h和.pkg
- 用tolua++生成对应.cpp文件
- 最后在AppDelegate.cpp中调用
若有改动需要再次编写pkg文件,较为繁琐
cocos2dx 3.x – generator.py & genbindings.py
- 配置/frameworks/cocos2d-x/tools/tolua/XXXXXX.ini
- 在AppDelegate.cpp中加入注册代码
PS : 本质还是调用了tolua++,相对于直接使用tolua++来说比较方便。
generator.py
待定
genbindings.py
待定
tolua++
参考文章:
源码分析
待定(2500行代码左右,正在看中)