如何发送一个c#事件到工作的lua脚本
本文关键字:事件 工作 脚本 lua 一个 何发送 | 更新日期: 2023-09-27 17:53:18
我使用c#和LuaInterface,我需要从我的c#代码发送一个事件到工作脚本。例如,它可能是一个button_click,它会中断正在工作的lua脚本或改变其逻辑。那么,我要怎么做呢?
你要么要求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);
}