2

我正在使用 c# 和 LuaInterface,我需要将一个事件从我的 c# 代码发送到工作脚本。例如,它可能是一个 button_click 中断正在工作的 lua 脚本或改变其逻辑。那么,我该怎么做这样的事情呢?

4

1 回答 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 回答