Cocos2D-X V3.10制作自定义类的Lua Bingding

  1. 首先按照参考资料来,把环境都配置好,包括python、yaml、cheetah、ndk-r9b(一定要r9b);

  2. 到cocos的目录,找到tolua文件夹


  3. 复制一份*.ini的配置文件,对其作出修改


    Cocos2D-X V3.10制作自定义类的Lua Bingding_第1张图片
  4. 复制genbinding.py,然后对其作出修改


  5. 运行自定义后的genbinding.py文件

  6. 如无意外,会在输出目录输出lua_CUpdater_auto.cpp


    Cocos2D-X V3.10制作自定义类的Lua Bingding_第2张图片
  1. 接入到C++中即可,接入参考资料: Cocos2d-Lua 3.12 生成绑定 导出C++类给LUA调用( tolua genbindings.py 的使用)

注意:避免在头文件中引用外部头文件,如CUpdater中,有这样的引用,

Cocos2D-X V3.10制作自定义类的Lua Bingding_第3张图片

那么生成binding的时候,会报错,说找不到curl.h文件。应该把这些外部头文件引用放在cpp中实现。如下

Cocos2D-X V3.10制作自定义类的Lua Bingding_第4张图片
更多参考:
  • cocos2dx-3.x 导出自定义类到 lua 过程详解
  • cocos2d-x 3.0rc0 - bindings-generator 问题与解决
  • Cocos2d-x下Lua调用自定义C++类和函数的最佳实践

附一份切换系统环境变量的批处理,方便切换不同的ndk
@echo off
echo ---------------------------------------------------
echo 请输入要转换的环境:
echo 1为NDK-r10d(打包用)
echo 2为NDK-r14b(creator)用
echo 3为NDK-r9b(Lua-binding)用
echo ---------------------------------------------------
set /p option=

if %option% EQU 1 goto switchToR10d
if %option% EQU 2 goto switchToR14b
if %option% EQU 3 goto switchToR9b

echo 输入错误,退出
goto finish

:switchToR10d
setx ANDROID_NDK_HOME D:\Android\android-ndk-r10d
setx ANDROID_NDK_ROOT D:\Android\android-ndk-r10d
setx NDK_ROOT D:\Android\android-ndk-r10d
echo 转换完毕,已转换到r10d
goto finish

:switchToR14b:
setx ANDROID_NDK_HOME D:\Android\android-ndk-r14b
setx ANDROID_NDK_ROOT D:\Android\android-ndk-r14b
setx NDK_ROOT D:\Android\android-ndk-r14b
echo 转换完毕,已转换到r14b
goto finish

:switchToR9b:
setx ANDROID_NDK_HOME D:\Android\android-ndk-r9b
setx ANDROID_NDK_ROOT D:\Android\android-ndk-r9b
setx NDK_ROOT D:\Android\android-ndk-r9b
echo 转换完毕,已转换到r9b
goto finish

:finish:
pause

你可能感兴趣的:(Cocos2D-X V3.10制作自定义类的Lua Bingding)