问题标签 [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.

0 投票
1 回答
158 浏览

c# - NLua:无法将“Command[]”类型的对象转换为“System.Object[]”类型

我有一个使用 NLua 编写脚本的游戏引擎。但是,我似乎无法访问Command数组中的元素:

MainBuffer是一个类型为 的对象BufferedCommand,其中包含Command结构数组,称为“Hold”、“Release”和“Press”。该Command结构包含两个枚举属性,按钮,类型Button(一个标志枚举)和Directions类型Direction(另一个标志枚举)。

当我尝试运行此脚本时,标题中出现错误。为什么它试图投射到System.Object[]?有没有办法解决这个问题?

0 投票
1 回答
1126 浏览

c# - NLua - 如何通过 Lua 向用户数据添加新功能?

我正在尝试为我的Player类定义一个在 C# 中定义的新函数。Lua 在我的项目(游戏引擎)中的目的是为实体(例如玩家)定义自定义行为。

但是,当我DoFile(fileName)对 Lua 文件执行此操作时,它会因以下异常而崩溃:

“字段或属性‘空闲’不存在”

它特别指向这段代码的第一行:

好像写的有问题Player:Idle。但是,我也尝试将其编写为Player.Idle并且我遇到了同样的问题。以下是我在 C# 中处理为播放器加载脚本的方式:

我将 Player 全局设置为,this因为这是播放器类,所以任何新函数都需要在Player. 我究竟做错了什么?


编辑

我已经解决了之前的错误,但我仍然没有得到我想要的结果。似乎不可能直接这样做;但是我已经阅读过,似乎在 Lua 5.2 中,有一种方法可以通过debug.setuservalue. 但是,当我尝试使用它时,表仍然是空的(即使用户数据不是)。

这是我尝试过的(C#):

换句话说,我希望能够self在脚本中使用能够引用用户数据,以及自定义函数,例如Idle()Turn()

我怎样才能实现我想要的行为?

0 投票
0 回答
162 浏览

lua - 使用 NLua 反序列化 Lua 表

我在网上搜索过,尤其是这个:

表序列化

他们都没有工作。

我正在尝试最简单的表格,如下所示:

这是 INPUT.LUA 文件

在哪里x = input.lua

我在我的 Lua 中有一个:-

我使用所有反序列化器得到的只是“这不是一张桌子”。

我现在正在编写自己的反序列化器,它必须处理所有转义字符、表格的开头、嵌套表格的跟踪和值的输入——为什么????

我是个白痴-我误解了表格序列化例程的哪一部分?

0 投票
1 回答
66 浏览

nlua - 调用外部程序集

我指的是 NLua 主页上的“SomeClass”。让#s 假设这已被编译成程序集“SomeClass”。

当我想在 Lua 中使用它时,我应该能够使用以下方法引用它:

import ('SomeClass', 'SomeClass') myclass=SomeClass() -- 调用构造函数 func1=myclass:Func1() -- 调用 Func1

正确的?至少这是示例中使用标准.Net 程序集的方式。然而,我总是失败。“Someclass”始终为零。

不幸的是,这些示例总是提到在 C# 对象中使用带有“DoString”的 lua。但我想在 Nlua.exe 中使用它。

有什么提示吗?

谢谢,

赫尔穆特

编辑:好的,我有点远。使用调试,我发现导入正在正确加载我的程序集。但是当我想获取我的程序集的一个实例时,我得到一个错误:

在此处输入图像描述

0 投票
0 回答
183 浏览

.net - x64 .Net 核心中的 NLUA 错误图像异常

我在 Windows 10 上的 Visual Studio 2017 中使用 NLUA dll,我正在使用 .Net core 2.1 x64 构建和发布我的 ASP.Net 核心应用程序。

当我尝试执行 MyLua = new NLUA.Lua() 时收到错误图像异常“错误图像 KeraLua.NativeMethods.LuaLNewState()”

我使用最新的 NLUA 1.3.2 。

问题是当我删除我的 .Netcore x64 并使用 x32 时,它工作得很好!

我有义务使用 .Netcore x64 但它不起作用。任何帮助将不胜感激。

0 投票
2 回答
621 浏览

lua - Lua 嵌套需求路径

我正在编写一个工具来解析其他用户创建的 lua 插件。关于插件的唯一保证是它在已知目录中有一个 data.lua 文件。在那里,用户可以自由地做任何他们想做的事情。这个特定的插件使用 require 来加载一个文件并且该文件加载另一个文件。两者都是相对路径,但第二个是相对于第一个文件的位置。

  • 数据.lua
  • foo/bar.lua
  • foo/baz.lua

数据.lua:

foo/bar.lua:

当我尝试执行 data.lua 时,当 foo/bar.lua 尝试要求“baz”时出现错误。它尝试的路径都不是./foo/。

知道如何解决这个问题吗?我可以找到任何专门关于这种情况的文档,似乎我需要将 /foo/ 硬编码到路径中,但我不提前知道。这似乎应该是自动的,是否有我缺少的设置或者我运行了错误版本的 lua?我正在使用 NLua 4.0

谢谢

0 投票
0 回答
128 浏览

c# - 如何在我的 vs 解决方案中添加和使用 NLua?

我正在尝试创建一个用 Lua 编写的数据库,该数据库与我用 c# 编写的方法分开。到目前为止,我找到的关于如何从 c# 运行 Lua 的答案是“NLua”(https://github.com/NLua/NLua),但我不知道从哪里开始将它集成到我的项目中,以便我可以将其用作资源。

有一个 README 文件给出了如何在 c# 中“创建 Lua 状态”的示例:

从 NLua 文件中,它们中的哪些与 NLua 的使用相关,我如何将它们应用/安装到我的项目中以在 ac# 类中执行此操作,或者我是否要解决这个问题?

到目前为止,我已经尝试将 LuaRunner 和 Nlua 文件夹以及整个 NLua-Master 文件夹放在我的项目中,但必须有一些额外的步骤才能让我“使用 NLua”;去工作。

0 投票
0 回答
487 浏览

lua - 如何从lua运行可执行文件?

我正在尝试通过lua启动可执行文件。Lua 函数由 c# 在线程中调用。os.execute启动一个.bat文件,该文件与程序保存在同一位置,但无法启动程序。

顶行有效,而底行无效。

这个问题不同于How do I run an executable using Lua? 因为我在 .net 环境中使用 lua。该问题中给出的解决方案对我不起作用。

0 投票
0 回答
92 浏览

c# - 如何在 NLua 的调试脚本下获取函数局部变量?

当我使用 NLua 调试 lua 脚本时,以及当我到达 DoSomething() 函数调用(带有 return 语句的行)时,我如何获取函数局部变量列表(int1、int2、int3 和 str1)并获取它们的值?有没有可能,或者我只能看到全局变量?

0 投票
1 回答
615 浏览

lua - ZeroBrane - 使用 NLua 和 Visual Studio 进行调试(适用于 macOS)

有没有办法使用 ZeroBraneStudio 调试 Lua 脚本,但通过Visual Studio for macOS 甚至 Windows(不是 VS Code)的 C# 中的NLua加载/初始化脚本?

这样做的主要原因是为了让 NLua 中包含的 CLR 包互操作性可用于 ZBS 中的 Lua。

我无法让 ZBS 中的远程调试功能与 NLua 一起使用。当程序处于调试模式时,Lua 脚本中的调用require("mobdebug").start()会触发 Visual Studio 中的断点,但不会触发设置 ZBS 的断点。是否需要更多配置?

请和谢谢

-- 更新 1:

打印输出line