问题标签 [moonsharp]

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 投票
0 回答
738 浏览

c# - Roslyn 可以执行复杂的脚本吗?

我们有一个场景,使用脚本语言将使我们能够避免在我们的软件中编写太多特定于客户端的自定义功能。我们已经确定了脚本可能有用的领域:

  1. 数据导入:此处选择、解析并根据业务规则验证文件(文本文件、excel 等),然后将数据导入数据库。

在上述区域中,我们需要在脚本中:

  1. 访问我们的其他程序集(例如 POCO 程序集),创建类和调用方法
  2. 连接到数据库以检索和写回数据

Roslyn 是否使我们能够实现上述目标,或者我们是否应该研究其他解决方案,例如Moonsharp

0 投票
2 回答
3609 浏览

c# - 如何使用 MoonSharp 加载 lua 表?

在浏览了各种 C# 的 Lua 解释器之后,似乎只有一个是真正的纯 c# - MoonSharp。后来成为 NLua 的 LuaInterpreter(从 2009 年起已停用)依赖于其他两个 c# 库之一 KeraLua 或另一个库,并且需要自定义的 lua52.dll(您不能使用来自 lua.org 的那个)。他们有一个已关闭的错误报告,上面写着查看自述文件以获取他们定制的 lua52.dll 的下载位置,但它不存在。您被迫从各种来源下载这些库,并祈祷它们一起工作,此外还有一个多文件分发,由于最终用户计算机上的几个 lua52.dll 变体(假设他们将使用不仅仅是你的程序)。

NLua 上一个闪亮的灯塔是它显然很受欢迎,但是该项目几年来没有收到任何重大更新。另一方面,MoonSharp 似乎是完全独立的,但缺乏常见任务的文档,例如加载使用 lua 构建的表并使用它。

我根据他们在 Git 上提供的单个示例提出了以下代码,然后在他们的网站上复制了 moonsharp.org(以先到者为准,我不确定,但只有 1 个示例还不够):

结果如下(图片中的代码略有不同,因为我在此处调整了粘贴的代码以保持清洁,并使您更容易使用下面 pastebin 链接中的表格数据重现问题。)

MoonSharp.Interpreter 表加载 Lua 失败

我正在尝试阅读的表格如下所示(由于大小超过 30,000 个字符,因此必须在 pastebin 上进行简化):

魔兽世界 - Datastore_Containers Lua 表示例数据

我有某种工作,它有点hackish,但似乎并没有离开遍历值或显式获取子表/值或值的键。

问题是我似乎没有任何方法可以输入子表结果集或显式访问类似t["global"]or的结果集t.global

0 投票
1 回答
1036 浏览

c# - 使用 MoonSharp Lua 访问结构

我在更改结构成员时遇到问题,该结构是通过 Lua 解释器 MoonSharp 的类的成员。

我当前的测试设置如下所示:

为了测试,我将向量对象作为一个类和一个结构。

这是包含结构/类的类。

在我的主程序中,我尝试更改结构和类的值(仅 x),但它仅适用于类。

我认为该类是值类型而不是引用类型存在一些问题。我正在使用的 API 使用结构,这迫使我获得结构访问权限,但我什至不能使用 MoonSharp ProxyType。

有没有人知道没有完全重写代码的解决方法?

0 投票
1 回答
335 浏览

c# - Unity + Moonsharp:iOS 发行版 > 不工作

我们在 Unity 新游戏(Unity v.5.4.1)中使用 Moonsharp(Lua 解释器)

在 Android 上运行良好。而且...这就是关键...

但是在 iOS 的 DEV 版本中没有问题,但是在 RELEASE 版本中它不能正确运行。

我们有以下错误:

ios开发版和发布版有什么区别?

我重复。我们只会在将它发布到 iTunes Store 时收到该错误,而不是在开发模式下。

有什么解决办法吗?

0 投票
1 回答
1180 浏览

c# - 使用 moonsharp 将 C# 对象传递给 lua 函数。

我在 Unity3d 中使用 Moonsharp 时遇到问题。我正在尝试传递“AppletMessage”对象:

进入lua中的一个函数,我不知道该怎么做。我目前正在做的是这样的:

当它尝试调用函数并传入 AppletMessage 时,这给了我来自 applet 类的错误:

0 投票
2 回答
124 浏览

lua - Lua:表范围的简洁表达

我正在开发一款游戏,根据项目中定义的一些约束或通过 mod 文件在外部定义的一些约束,将动态生成一堆角色。我正在使用 MoonSharp Lua (5.2) 解释器来连接我的 C# 代码,并使用 Lua 表来存储约束预设。举个例子:

这很好用,但从最终用户的角度来看,这涉及到很多不必要的输入。我们显然正在研究 AgePresets,但它仍然作为每个成员名称之前的前缀被提及。

我当然可以将 AgePresets 定义为一个数组,例如 AgePresets = { Child = {}, Teenager = {} } 但这样做的问题是我无法引用数组中先前定义的元素。

这不起作用:

理想情况下,我想要实现的是一种干净、简洁的方式让用户输入这些数据,就像在第一个示例中一样,但不必放置 AgePresets。前缀在一切之前。如何在文件中声明一个范围,以使文件中定义的所有后续成员都在该范围内,同时保持引用之前在该范围内定义的其他成员的能力?

0 投票
1 回答
909 浏览

c# - Moonsharp 对(...)引发异常“错误参数 #1 到 'next'(表预期,得到字符串)”

我不明白为什么会这样。我正在使用 Moonsharp 在我的应用程序中运行 LUA 脚本,我创建了一个 LUA 函数 IN(v, ...) 并且我想用对迭代 ... 参数。

如果它被调用,我会收到以下异常:

“MoonSharp.Interpreter.ScriptRuntimeException”错误参数 #1 到“下一个”(表预期,得到字符串)

所以我决定检查我的 ... 变量中是否有一个字符串而不是一个表。

C# 中的返回值是具有 'param2' 和 'param1' 的 2 个值的元组,因此它应该与对或 ipairs 一起使用,不是吗?

提前致谢。

0 投票
0 回答
253 浏览

c# - Moonsharp 中的表值返回为空

我刚开始在 c# 中使用 Moonsharp,并尝试测试一些东西,例如从表中检索值。但是,编译器告诉我值 t 为空。从测试中检索数值的正确方法是什么?

脚本.lua:

c#代码片段:

谢谢!

0 投票
1 回答
497 浏览

c# - 使用 MoonSharp 在 Lua 中循环 C# 字典

我想迭代这样的事情:

在 Lua 中,同时使用 MoonSharp。从文档来看,MoonSharp 似乎处理自动转换为IDictionary类型表?

但是,尝试做这样的事情......

...正在给我:

ScriptRuntimeException: bad argument #1 to 'next' (table expected, got userdata)

关于为什么 MoonSharp 没有将我的字典转换为表格,我有什么遗漏吗?

谢谢!

0 投票
1 回答
1440 浏览

c# - 如何从 Lua / MoonSharp 脚本调用和等待异步 C# 方法?

我想从 Lua / MoonSharp 代码中调用并等待 C# 异步方法。

例如:

1)。

2)。

然后从 Lua 调用它 - 1)。不等待但继续执行脚本,以及 2)。抛出ScriptRuntimeException: cannot convert clr type System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult] MoonSharp.Interpreter.Interop.Converters.ClrToScriptConversions.ObjectToDynValue异常。

有什么办法可以使这项工作?