前言
在游戏开发过程中,主要业务逻辑等由Lua开发(因为可以动态热更、灵活便捷等),但是Lua毕竟是脚本语言,遇到一些高性能需求或其他涉及底层变动,需要用C++来实现(你大爷还是你大爷)。
对于将C++的类或方法导出给Lua调用,
Cocos2d-x引擎采用的是 tolua++,通过便携tolua++的pkg配置文件,来定义要导出的每一个类的信息,这个步骤相当于用tolua++的规则将类的头文件重写成pkg文件,tolua++会根据这个文件以及类的cpp文件来生成C++代码文件。
直接使用tolua++在批量导出的时候会比较麻烦,基于此,引擎提供了 genbindings.py 文件来完成批量导出的工作,流程如下:
- 编写要导出的C++类
- 为这个类编写一个ini配置文件(一个ini可对应多个类)
- 修改genbindings脚本,加载ini配置
- 执行genbindings脚本,生成类导出到Lua的C++代码
- 将生成的代码添加到项目中,并执行注册方法
本文主要内容一览:
- 环境搭建
- 使用到的相关配置结构介绍
- 具体实操
- 遇到问题及解决方案
环境搭建
Windows平台
- NDK r9b
- 这里 README上,写的需求版本 r10c or later;但是脚本头部注释要求版本 r9b;经过实际测试使用 r9b 版本NDK 有效。
- 配置环境变量,ndk根目录:NDK_ROOT
- Python2.7.3(32bit)
- 配置环境变量,具体到exe文件:PYTHON_BIN(xxx\python.exe)
- Python库 pyyaml
- 解压或安装到上面python的相应位置: xxx\Lib\site-packages
- Python库 pyCheetah
- 解压或安装到上面python的相应位置: xxx\Lib\site-packages
Mac 平台
待补充
配置介绍
genbindings.py 文件
这个脚本文件主要作用是根据ini文件,执行 cocos2d\tools\bindings-generator\generator.py 来生成导出C++代码。
这个文件需要修改的地方不多,多注意下列几个地方即可:
- project_root:项目工程根目录
- cocos_root:cocos引擎根目录
- cxx_generator_root:调用的generator.py文件所在的目录
- tolua_root:tolua根目录,ini配置文件的目录