我正在使用 c# 和 LuaInterface,我需要将一个事件从我的 c# 代码发送到工作脚本。例如,它可能是一个 button_click 中断正在工作的 lua 脚本或改变其逻辑。那么,我该怎么做这样的事情呢?
问问题
410 次
1 回答
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);
}
于 2014-03-26T12:44:53.567 回答