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

时间:2014-03-26 06:58:55

标签: c# lua luainterface

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

1 个答案:

答案 0 :(得分: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);
    }