本来以为很简单的,妈的,碰到一大堆的坑。记录一下
步骤:
1:给.h和.cpp加上命名空间。
#pragma once #include "cocos2d.h" USING_NS_CC; namespace GameLogic{ class MyClass : public Ref { public: MyClass(void); ~MyClass(void); bool init() { return true; }; CREATE_FUNC(MyClass); int foo(int i); }; }
#include "MyClass.h" namespace GameLogic{ MyClass::MyClass(void) { } MyClass::~MyClass(void) { } int MyClass::foo(int i) { return i + 100; } }
2:在tools\bindings-generator\targets\lua和bindings-generator\targets\spidermonkey的conversions.yaml文件加上:
"GameLogic::": "gls."
注意前面不能有tab,必须是空格。要不然会出现文件解析字符出错。
bool LuaEngine::init(void) { _stack = LuaStack::create(); _stack->retain(); <span style="color:#ff0000;">register_all_myclass(_stack->getLuaState());</span> executeScriptFile("DeprecatedEnum.lua"); executeScriptFile("DeprecatedClass.lua"); executeScriptFile("Deprecated.lua"); return true; }
4:编写lua代码:
local test = ccc.MyClass:create()
print("the first cocos bind lua result "..test:foo(2))
完成.....