Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以使用C#将数据动态输入lua脚本?_C#_Lua - Fatal编程技术网

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

有没有一种方法可以使用C#将数据动态输入lua脚本?,c#,lua,C#,Lua,我正在尝试使用C#/Lua实现以下逻辑: 在我的C#应用程序中,我有一个带有文本框的表单,允许我输入一个信号值,然后通过(state[“timeToCollection”]=signalValue.Text;)将其传递给Lua脚本。这个想法是,当这个值等于“low”时,就会发生其他一些调用 我目前面临的问题是,这个signalValue.Text需要在执行Lua脚本之前填写,而不是在执行它之后填写(期望的行为)。是否有一种方法可以动态执行此操作,也就是说,我执行Lua脚本,Lua脚本检查sign

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

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

我目前面临的问题是,这个signalValue.Text需要在执行Lua脚本之前填写,而不是在执行它之后填写(期望的行为)。是否有一种方法可以动态执行此操作,也就是说,我执行Lua脚本,Lua脚本检查signalValue.Text值,如果该值不低,它将一直运行,直到用户在表单中输入low

谢谢

C#

Lua脚本:

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

DM()

您有Lua解释器,因此要设置变量,只需设置它:

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

您没有提到您正在使用什么风格的C#Lua绑定,但例如
MoonSharp
,因为它是Lua的完全托管重新实现,直接公开变量表,所以您可以使用类似
state.Globals[“timeToCollision”]
的方法直接设置值,无需解析和执行Lua代码。

您拥有Lua解释器,因此要设置变量,只需设置它:

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

您没有提到您正在使用什么风格的C#Lua绑定,但例如
MoonSharp
,因为它是Lua的完全托管重新实现,直接公开变量表,所以您可以使用类似
state.Globals[“timeToCollision”]
的方法直接设置值,无需解析和执行Lua代码。

您使用哪个c#库来执行Lua代码?您使用哪个c#库来执行Lua代码?在这种情况下,直接公开变量可能不起作用,因为我需要Lua脚本来实现逻辑,而不是相反,直到从c#传递低值为止应用目前我面临的问题是,当Lua脚本进入while循环时,整个c#from就会冻结:/n在这种情况下直接公开变量可能不起作用,因为我需要Lua脚本来实现逻辑,而不是相反,直到从c#应用程序传递低值。目前我面临的问题是,当Lua脚本进入while循环时,整个c#from就会冻结:/