2
我使用c#和LuaInterface,我需要從我的c#代碼發送一個事件到工作腳本。例如,它可能是一個button_click,它會中斷工作的lua腳本或將其邏輯連接起來。那麼,我該如何做這樣的事情呢?如何發送一個c#事件到工作lua腳本?
我使用c#和LuaInterface,我需要從我的c#代碼發送一個事件到工作腳本。例如,它可能是一個button_click,它會中斷工作的lua腳本或將其邏輯連接起來。那麼,我該如何做這樣的事情呢?如何發送一個c#事件到工作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);
}
您不能中斷一個Lua腳本;該腳本可以使用協程暫時將控制權交還給應用程序,但它仍然不會「中斷」。 – Schollii
這個問題沒有理由被擱置。回調並不是一個不尋常的概念。 – Mud
這一刻似乎並沒有被擱置。 – Schollii