如何发送一个c#事件到工作的lua脚本

本文关键字:事件 工作 脚本 lua 一个 何发送 | 更新日期: 2023-09-27 17:53:18

我使用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);
    }
相关文章: