如何将c#事件发送到正在工作的lua脚本?

我正在使用 C# 和 LuaInterface,需要从我的 C# 代码向正在工作的脚本发送事件。例如,这可能是一个按钮单击事件,中断正在工作的 Lua 脚本或更改其逻辑。那么,我该如何做到这一点呢?

点赞
用户501459
用户501459

要么您需要使用 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-26 12:44:53