问题标签 [nlua]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 无法处理 NLua 崩溃
我正在尝试在我的 C# 应用程序上使用 lua 脚本,但是在运行不同的脚本时遇到问题,当我运行 3~4 个脚本时,我不断收到此异常:
如您所见,我正在“捕获” AccessViolationException 异常,以防万一:
我创建了这个小项目来向你们展示正在发生的错误。只需添加 3~5 个线程并启动它们,崩溃发生的时间不应超过 5 秒。
小项目链接:https ://www.dropbox.com/s/4fyk8tblff7v5wa/SmallLuaTest.rar
c# - 如何在使用 NLua 运行的脚本中对 .NET 枚举执行按位或?
我在 C# 中有以下反射代码,我正在尝试使用 NLua 脚本进行复制:
G.Object.GetType().GetField("count", BindingFlags.Instance | BindingFlags.NonPublic);
一切都很好,直到我尝试对两个标志使用按位或运算。我已经尝试过:(
BindingFlags.Instance + BindingFlags.NonPublic
非数字的算术运算)
BindingFlags.Instance | BindingFLags.NonPublic
(显然不起作用,但值得一试)
我还尝试了位操作库的纯 Lua 实现。一切都失败了,因为我试图 OR 在 NLua 中被称为“用户数据”类型。
使用 tonumber() 转换 'userdata' 类型也失败。
我当前的 Lua 代码如下:
obj = G.Object:GetType()
field = obj:GetField("count", *...two OR'd flags here...*)
c# - NLua - 网页上显示的应用程序是否存在于某处?
在NLua 网页上,有一张使用 NLua 绑定的实时 Lua 解释器(编辑:Windows)的图像。这是否存在以供在某处下载?
我非常了解 Lua,但我对 C# 的了解非常有限,并且如果可能的话,我强烈希望不必从源代码构建。
提前感谢一堆。
c# - 使用 Nlua 在共享项目中实现的 C# 类
我想在我的项目中使用 Nlua。我的项目设置是:我有一个共享项目,我在其中实现了我的逻辑,以及几个使用这个共享项目的平台特定项目。
我现在想在使用 Nlua 执行的 lua 函数中使用此共享项目中定义的类。问题是,这不起作用。
这工作正常。但是如果我现在想使用共享项目中定义的类,这将不起作用:
我得到的错误是:
从我读到的内容(顺便说一下,我是 lua 的新手)如果我想在定义变量之前对变量做一些事情,就会发生这个错误(因为 lua 文件是从头到尾解析的,尽管我并不担心这。)
我的问题是:如何使用 Nlua 共享项目中定义的方法和类?我很确定我的程序集有问题,但似乎没有太多关于这个主题的文档。
任何帮助表示赞赏!
c# - 不能在 NLua 状态之间传递值
我设置了以下方法来重现我遇到的问题,即从一个 lua 状态通过另一个函数参数传递表会导致表为空。
在这种情况下,该表似乎被解释为一个函数。我不知道为什么。
运行此代码段后 tableFuncResult 的值为对象数组 { null, null }。表表为空。相反,tableFunc 应该为 null,而 tableTable 应该包含在 scope2 中定义的表。
c# - 带有c#的lua脚本中的西里尔字符串值
我尝试使用 NLua 库 (nlua.org) 在 C# 项目中添加 lua 脚本。我的问题是字符串值中西里尔符号的不正确表示。我的 C# 代码是:
脚本文件代码为:
更改脚本文件编码对我没有帮助。我还尝试使用以下代码搜索正确的脚本文件编码:
这是控制台输出:
您可以看到根本没有正确的变体。所以我不知道如何解决这个问题。
c# - 如何更改 NLua 使用的 lua 版本?
我想使用 Lua 4.0.1 而不是 5.2,因为我必须解析 4.0.1 脚本。
从那时起,通用 for 循环的语法发生了变化(没有向后兼容性)。
如果这是不可能的,是否有任何 NLua 替代方案支持这一点?
.net - 使用 NLua,“require”关键字是如何工作的
我有一些包含我的业务逻辑的 Lua 代码,我想使用 NLua 在 .NET 中运行。
我的一些 lua 文件目前使用“require”关键字来引用其他文件中的函数。现在,如果我使用例如 ZeroBrane Studio 运行代码,这可以正常工作。但是,一旦我使用“DoFile”将代码加载到 NLua 中,就会出现一些“未找到模块”错误。
我的问题是;在 NLua 中运行代码时,我可以使用“require”的概念吗?如果不是,那么在对文件运行 DoFile 之前,我是否需要删除这些行(当然要确保以正确的顺序运行文件)?
更新:我想也许我只需要将我的 Lua 文件夹添加到 package.path。我通过执行DoString("package.path = '<my_path>' .. package.path");
“这是“最佳实践”来解决它吗?
c# - 在 NLua 中处理 LuaScriptException
所以我一直在研究一个简单的游戏引擎,它使用 SFML.Net 来制作图形和其他东西,并使用 NLua 来编写游戏脚本。所以我在我的 BaseGame 类中有这个方法,它应该运行 Lua 脚本并将一些对象和方法等添加到 Lua 端。我有一个用于捕获任何异常的 try/catch 块。
如果你有兴趣,这里是 main.lua 文件的内容
无论如何,C# 方法不会打印出“Success!”,只会打印出“Doing stuff”,我不知道为什么什么也没发生。它也没有打印出异常。那么这里发生了什么,我该如何解决这个问题?
c# - NLUA 脚本的用户输入
我最近在我的应用程序中添加了 NLUA 支持,目的是允许轻松编辑功能。也许是一个快速的解释。
我正在制作一个简单的游戏,采用 DarkSigns 和其他“黑客”模拟器的风格。我想允许我自己和我的玩家都可以使用脚本。我决定使用 NLUA 来提供这个。基本应用程序是使用 WPF 和 caliburn.micro 用 c# 编写的。
所以我有一个模拟控制台,它实际上是一个用于输入的文本框和一个用于控制台输出的列表视图,我有一个命令结构,允许输入和运行命令,包括访问(游戏)IP 的“连接”命令地址,这包括一个绑定到脚本的端口。所以连接到 1.2.3.4 的 25 端口将运行“port25.lua”脚本。
一切正常,但是我意识到我无法将输入直接输入这些脚本,任何调用的 LUAio.read()
实际上都不会等待输入,因此会失败。
所以我正在研究如何解决这个问题,不幸的是,NLUA 文档似乎很薄,我知道这会因为我没有使用实际的控制台而只是模拟一个而变得更加复杂。
我想要的东西可能吗?如果是这样,我如何将 NLUA 重定向io.read()
到我的文本框(如果可能)或者是否有其他解决方案?
还是从 NLUA 转移到另一个脚本添加是更好的解决方案?
谢谢你的时间。