我正在使用c#和LuaInterface,我需要从我的c#代码向工作脚本发送一个事件。例如,它可能是一个button_click,它会中断工作lua脚本或调换其逻辑。那么,我该怎么做呢?
答案 0 :(得分:2)
您要么需要Lua脚本来创建一个全局函数,您可以在事件发生时按名称调用该函数,或者在C#中注册一个函数,Lua代码调用该函数来注册回调。后者更灵活。
private void Test()
{
lua.RegisterFunction("setEventHandler", this, GetType().GetMethod("SetEventHandler"));
lua.DoString(@"
setEventHandler(
function(arg)
print('In my event handler:', arg)
end)
");
CallEventHandler("This is an event!");
}
public delegate void EventHandler(String s);
private EventHandler _eventHandler;
public void SetEventHandler(EventHandler eventHandler)
{
_eventHandler = eventHandler;
}
public void CallEventHandler(string test )
{
_eventHandler(test);
}