SLua UE中LUA方法传递给C++的几种方式和使用说明
-
我们在写代码的时候,大多数游戏逻辑都是用的LUA,这都是为了方便热更新修复BUG,在UE4中,LUA传递到C++,然后C++再执行,这有两种方式,一个是直接传递函数的方法,另外一个是声明委托,委托用于实现事件和回调机制的执行,像这样的需要再Lua中创建代理函数执行,如下所示。
-
LUA中直接传递方法的使用,例如在C++中的代码:
-
class Foo { LuaClassBody() public: void setCallback(const TFunction<void(int)>& func) { callback = func; } void docall() { if(callback) { callback(1024); callback = nullptr; } } TFunction<void(int)> callback = nullptr; } //导出类和函数 DefLuaClass(Foo) DefLuaMethod(virtualFunc,&Foo::virtualFunc) DefLuaMethod(setCallback,&Foo::setCallback) DefLuaMethod(docall,&Foo::docall) EndDef(Foo,nullptr)
在Lua中执行,代码如下:
-- test cpp binding
local f1=Foo(1024)
-- test tfunction
f1:setCallback