2014-03-26 12 views
2

나는 C#과 LuaInterface를 사용하고 있으며 C# 코드에서 작업 스크립트로 이벤트를 보내야합니다. 예를 들어, 작업 루아 스크립트를 인터럽트하거나 로직을 변경하는 button_click 일 수 있습니다. 그래서, 어떻게 이런 일을 할 수 있을까요?작업 루아 스크립트에 C# 이벤트를 보내는 방법은 무엇입니까?

+0

루아 스크립트를 중단 할 수 없습니다. 스크립트는 coroutine을 사용하여 응용 프로그램에 일시적으로 제어권을 반환 할 수 있지만 여전히 "중단"하지는 않습니다. – Schollii

+0

이 질문을 보류해야하는 이유는 없습니다. 콜백은 특별한 개념이 아닙니다. – Mud

+0

현재이 보류 상태가 아닙니다. – Schollii

답변

1

전역 함수를 만들려면 Lua 스크립트가 필요하며 이벤트가 발생할 때 이름으로 호출하거나 루아 코드가 콜백을 등록하기 위해 호출하는 C# 함수를 등록해야합니다. 후자는 훨씬 더 융통성이 있습니다.

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); 
    }