问题标签 [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:无法将“Command[]”类型的对象转换为“System.Object[]”类型
我有一个使用 NLua 编写脚本的游戏引擎。但是,我似乎无法访问Command
数组中的元素:
MainBuffer
是一个类型为 的对象BufferedCommand
,其中包含Command
结构数组,称为“Hold”、“Release”和“Press”。该Command
结构包含两个枚举属性,按钮,类型Button
(一个标志枚举)和Directions
类型Direction
(另一个标志枚举)。
当我尝试运行此脚本时,标题中出现错误。为什么它试图投射到System.Object[]
?有没有办法解决这个问题?
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()
。
我怎样才能实现我想要的行为?
lua - 使用 NLua 反序列化 Lua 表
我在网上搜索过,尤其是这个:
他们都没有工作。
我正在尝试最简单的表格,如下所示:
这是 INPUT.LUA 文件
在哪里x = input.lua
我在我的 Lua 中有一个:-
我使用所有反序列化器得到的只是“这不是一张桌子”。
我现在正在编写自己的反序列化器,它必须处理所有转义字符、表格的开头、嵌套表格的跟踪和值的输入——为什么????
我是个白痴-我误解了表格序列化例程的哪一部分?
nlua - 调用外部程序集
我指的是 NLua 主页上的“SomeClass”。让#s 假设这已被编译成程序集“SomeClass”。
当我想在 Lua 中使用它时,我应该能够使用以下方法引用它:
import ('SomeClass', 'SomeClass') myclass=SomeClass() -- 调用构造函数 func1=myclass:Func1() -- 调用 Func1
正确的?至少这是示例中使用标准.Net 程序集的方式。然而,我总是失败。“Someclass”始终为零。
不幸的是,这些示例总是提到在 C# 对象中使用带有“DoString”的 lua。但我想在 Nlua.exe 中使用它。
有什么提示吗?
谢谢,
赫尔穆特
编辑:好的,我有点远。使用调试,我发现导入正在正确加载我的程序集。但是当我想获取我的程序集的一个实例时,我得到一个错误:
.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 但它不起作用。任何帮助将不胜感激。
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
谢谢
c# - 如何在我的 vs 解决方案中添加和使用 NLua?
我正在尝试创建一个用 Lua 编写的数据库,该数据库与我用 c# 编写的方法分开。到目前为止,我找到的关于如何从 c# 运行 Lua 的答案是“NLua”(https://github.com/NLua/NLua),但我不知道从哪里开始将它集成到我的项目中,以便我可以将其用作资源。
有一个 README 文件给出了如何在 c# 中“创建 Lua 状态”的示例:
从 NLua 文件中,它们中的哪些与 NLua 的使用相关,我如何将它们应用/安装到我的项目中以在 ac# 类中执行此操作,或者我是否要解决这个问题?
到目前为止,我已经尝试将 LuaRunner 和 Nlua 文件夹以及整个 NLua-Master 文件夹放在我的项目中,但必须有一些额外的步骤才能让我“使用 NLua”;去工作。
lua - 如何从lua运行可执行文件?
我正在尝试通过lua启动可执行文件。Lua 函数由 c# 在线程中调用。os.execute
启动一个.bat
文件,该文件与程序保存在同一位置,但无法启动程序。
顶行有效,而底行无效。
这个问题不同于How do I run an executable using Lua? 因为我在 .net 环境中使用 lua。该问题中给出的解决方案对我不起作用。
c# - 如何在 NLua 的调试脚本下获取函数局部变量?
当我使用 NLua 调试 lua 脚本时,以及当我到达 DoSomething() 函数调用(带有 return 语句的行)时,我如何获取函数局部变量列表(int1、int2、int3 和 str1)并获取它们的值?有没有可能,或者我只能看到全局变量?
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
: