2014-03-26 60 views
2

我使用c#和LuaInterface,我需要從我的c#代碼發送一個事件到工作腳本。例如,它可能是一個button_click,它會中斷工作的lua腳本或將其邏輯連接起來。那麼,我該如何做這樣的事情呢?如何發送一個c#事件到工作lua腳本?

+0

您不能中斷一個Lua腳本;該腳本可以使用協程暫時將控制權交還給應用程序,但它仍然不會「中斷」。 – Schollii

+0

這個問題沒有理由被擱置。回調並不是一個不尋常的概念。 – Mud

+0

這一刻似乎並沒有被擱置。 – Schollii

回答

1

要麼你需要的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); 
    } 
相關問題