有没有一种方法可以使用C#动态地将数据输入到lua脚本中?

我正在尝试使用C#/ Lua实现以下逻辑:

在我的C#应用程序中,我有一个带有文本框的表单,允许我输入信号值,然后通过(state["timeToCollection"] = signalValue.Text;)将其传递给Lua脚本。当这个值等于“low”时,一些其他的调用将发生。

我目前遇到的问题是,这个signalValue.Text需要在执行Lua脚本之前填写,而不是在执行之后(期望的行为)。有没有一种动态的方法来做到这一点,意思是,我执行Lua脚本,Lua脚本检查signalValue.Text的值,如果值不是low,它就一直运行,直到用户在表单中输入low为止。

谢谢

C#

state.DoFile(luaScriptFile); //执行lua脚本

state["timeToCollection"] = signalValue.Text; //传递信号值

Lua脚本:

function DM()
     while (timeToCollision == 'low')
     do
        UDC:eventImageDataReq('AutoHitch',01)
     end

end

DM()
点赞
用户108796
用户108796

你拥有 Lua 解释器,所以要设置变量只需要简单地设置它:

state.DoString($"timeToCollision = '{signalValue.Text}'");

您没有提及您正在使用的 C# Lua 绑定的口味,但例如 MoonSharp,因为它是一个完全托管的 Lua 重实现,直接公开变量表,因此您可以使用类似 state.Globals ["timeToCollision"] 的方法直接设置您的值,而无需解析和执行 Lua 代码。

2021-01-07 15:58:42