cocos2d-x という、C++用の cocos ライブラリをベースに、Luaバインディングにも対応した、iPhone , android 向けゲーム開発統合環境です。
project>/frameworks/cocos2d-x/tools/tolua フォルダに、cocos2dx_custom.ini(customの部分は自分の追加クラス名)を追加する。
[cocos2dx_custom] prefix = cocos2dx_custom target_namespace = android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/include android_flags = -D_SIZE_T_DEFINED_ clang_headers = -I%(clangllvmdir)s/lib/clang/3.3/include clang_flags = -nostdinc -x c++ -std=c++11 cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/my -I%(cocosdir)s/cocos/base -I%(cocosdir)s/cocos/platform/android cocos_flags = -DANDROID cxxgenerator_headers = extra_arguments = %(android_headers)s %(clang_headers)s %(cxxgenerator_headers)s %(cocos_headers)s %(android_flags)s %(clang_flags)s %(cocos_flags)s %(extra_flags)s headers = %(cocosdir)s/cocos/my/CustomClass.h classes = CustomClass.* skip = rename_functions = rename_classes = remove_prefix = classes_have_no_parents = base_classes_to_skip = abstract_classes = script_control_cpp = no
上記のフォルダの中にある、genbindings.pyに、今作成した ini ファイルを追記する。この1行の意味は、左から、追加されたiniファイル名、クラス名、C++側のファイル名となる。
上記genbindings.pyに追加した行の3つ目の項目に記述されたC++側のソースコードのファイル名(C++側のファイル:lua_cocos2dx_custom.cpp と、lua_cocos2dx_custom.h)は、<project>/cocos/scripting/lua-bindings/auto フォルダに追加する。
また、このヘッダーファイル内には lua 側から使えるようにするための、グローバル関数定義を忘れなようにすること。
例:void register_all_cocos2dx_custom(lua_State* tolua_S);
lua側は、<project>/cocos/scripting/lua-bindings/auto/api フォルダの中に、custom.lua という形で、lua側のカスタムクラスのファイルを追加する。
作成中