问题标签 [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# - 是否可以将 LINQ 与 NLua 一起使用?
我想知道是否可以将 LINQ 与 NLua 一起使用?我搜索了各种来源,包括项目的github 页面,但没有任何运气。我得到了以下最小的 C# 示例:
MyLua.lua
看起来像这样:
执行时,语法错误(如上面 lua 脚本中的注释所示)由 NLua 返回。很高兴知道这是否是设计使然,如果是这样,未来的 NLua 版本是否将支持 LINQ?
c# - 直接返回调用者的调用者并在下次调用时恢复状态
我正在为系统构建一个插件。系统偶尔会调用我的插件的update()
方法。
在我的插件update()
方法中,我正在修改系统状态,但是在系统有机会这样做之前系统状态不会更新(这发生在update
方法调用之间)。
所以每当我做一个系统更新的方法时,我都必须一路update()
返回,让它返回,然后重新进入,然后我必须尝试回到我原来的位置。我一直在考虑一种更聪明的方法来做到这一点,即通过保存调用框架等。然后在返回时加载该调用框架。
但是,我没有开始自己实现这一点,而是在考虑是否已经有办法做到这一点。我正在编写的插件是在 Lua 中,通过 C# 的 NLua 库。
如果需要,我可以访问 C# 环境!
我有一个想法,我需要像延续这样的东西?
我想拥有的例子;
c# - 从 NLua 获取函数列表
如果我的应用程序需要多个文件,例如 one.lua 和 two.lua,我正在使用 NLua 作为我的应用程序的脚本接口
我想将所有文件中的所有函数都放入 luafunctions 列表中
NLua 似乎没有这样的功能,但是有没有办法解决它,有一个 GetFunction(string) 方法将返回您命名的函数,我可以在 GetFunction 方法上执行蛮力方法,但这将使我应用程序需要几个小时才能启动。
有什么方法可以解决这个问题并将所有文件中的所有函数都添加到 luafunctions 列表中?
c# - 如何在 Nlua 中使用 C# 静态字符串
我正在使用 NLua 作为我的应用程序的脚本接口。我想将键盘输入从 LUA 语言发送到我的 C# 代码。
我使用这个 C# 代码。
在LUA脚本中我做
在 keypressC 中,Nlua 将值 57351 传递给 key 参数。没关系。
在 keypressS 中,Nlua 传递值“?” 到关键参数。是KO。我不知道为什么会有字符“?”。看起来像是 NLua 中的编组错误(即 LuaInterface)?
你能帮助我吗?
c# - NLua (LuaInterface) - 调用函数
使用NLua (A LuaInterface fork)运行 lua 脚本时如何调用函数?
例如,现在我有:
但是,这只是运行脚本。在脚本里面我有一个自定义函数。我希望能够只运行该功能。我试过了:
但这没有用。我怎样才能做到这一点?
我的 lua 脚本是这样的:
或者,如果不可能 - 有没有办法在一个 lua 文件中包含不同的脚本?我希望能够使用不同的脚本参数运行相同的文件,例如:
谢谢。
c# - 当 Lua 嵌入到 C# 中时,无法在 Lua 中完全收集垃圾
我正在使用 NLua 从 C# 编译 lua 代码。问题是在 C# 中创建的 LuaTables 不能被 Lua 垃圾收集器完全处理掉。
这是示例代码:
这段代码简单地创建了 100 000 个表,然后在 C# 中处理它并在 lua 中调用垃圾收集。使用的内存可以在变量“mem”中检查。结果是“mem”将从 22.04Kb 增加到大约。1000KB。这意味着以这种方式处理会导致内存泄漏。
但是,如果我们立即处理 LuaTable:
它运作良好。“mem”保持不变+-1Kb。
为什么会这样?我应该如何处理 Lua 对象以使其完全可供 lua gc 访问?
c# - 将“中文”字符串传递给 NLua
我有调用 lua 函数的 C# 代码。我正在将字符串传递给这个函数。此函数处理字符串并返回表中的另一个字符串。
当我尝试通过“中文”字符串“怎么说”时 - 我得到“???” 在卢阿。(我试图打印这个字符串并将其保存到文件中)。我的 C# 编码是正确的,因为我可以在 Visual Studio 调试会话中看到正确的汉字。如何将“中文”字符串传递给 lua?
感谢任何帮助。
c# - 注册函数而不使用它们“对象引用未设置为对象的实例。”
我有一个 C# 中的 IRC Bot,我现在想使用 Lua 脚本。在机器人启动时,我想注册函数,并检测是否添加了新文件然后加载它。我已经完成了新文件/重新加载脚本功能,但是当我点击运行时,我得到“对象引用未设置为对象的实例”。在我希望用户能够使用的自定义功能上。
这是当前代码:
在机器人的 Main() 中,我目前只有 2 行:
vb.net - NLua - 未找到系统 DLL 异常
尝试在 VB.NET 中使用 Lua 有一个严重的并发症。我的问题是如何让这个库正确加载,以便它真正可用。
这是我的尝试。
我通过 NuGet 尝试了几种 Lua 库的变体。经过一番研究,我发现了 LuaInterface(在 NuGet 中不可用,官方 repo 引用 NLua作为它的继承者)。
开始了一个新项目,仅引用 NuGet 中的 NLua。-- 失败
- 从 NuGet 添加了对 Lua 的引用——仍然失败
- 开始了一个新项目,并直接从github下载了当前二进制文件用于 NLua --- 失败。
在上述所有情况下,我检查了构建文件夹以确保所有 DLL 都存在(因为 Visual Studio 仍然不会一直部署所有 dll - 请参阅 SQLite 库作为示例)。
我现在的错误是这个
在 KeraLua.dll 中发生了“System.DllNotFoundException”类型的第一次机会异常
现在,当我明确声明对该文件的引用时,就会出现大问题,因为它会产生冲突,因为 KeraLua.dll 和 NLua.dll 都有一个具有相同参数的“Lua”方法。
我在崩溃时使用的代码非常简单:
如果有人能解释为什么这个库如此失败或者我可能做错了什么,那将不胜感激。我目前正在尝试使用此库在 .net 环境中公开用 Lua 编写的表。我在这里看到了关于这个的例子,它们已经过时了,因为它们引用了已弃用的 LuaInterface 对象。
c# - Lua 返回错误的值
我有以下情况:
- 我在 nlua 中注册了 ac# 函数
- 这个函数在 lua 脚本中是这样调用的:
SomeFunction({Amount = 1})
- c# 函数被调用,但现在 Amount 是任意巨大的双倍
我在其中注册函数的代码:
如果我使用调试器,例如 t{{ Amount = -2,05689484611373E-178 }}
我花了大约两个小时在我的代码中找到一个错误(真正的错误要复杂得多),这正是我将问题简化为的原因。