问题标签 [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 投票
1 回答
513 浏览

c# - 使用 Lua 脚本返回的对象

我在“Conversion.lua”文件中有这个 lua 脚本:

我需要mmToin在 C# 代码中使用包含在 object 中的函数conversion

如果函数不在对象内部,我将使用以下代码:

但是如果我把它放在一个对象中,我就不能使用它;我试过了:

但不工作。

如何mmToin在 C# 代码中使用函数?谢谢。

0 投票
1 回答
341 浏览

c# - lua错误结束c#函数和父函数执行

当我尝试执行错误的 lua 代码时,它不仅会崩溃,而且会完全结束启动 lua 脚本的函数执行。

阅读以下代码的一些注意事项:prs() 是 Debug.Log()。prs("脚本完成"); 永远不会被调用。

此代码的问题

// script.Globals["getturnnumber"] = (Func<int>)getturnnumber;是故障线路。然后错误消息是因为它找不到函数:

我的问题是: 为什么函数和父函数会停止执行?一点旁注:这不仅发生在我遇到的任何错误中。

作为我插入测试的例子;为什么 prs("脚本完成"); 不叫

这就是我的意思:

以及执行的 lua 脚本:

结尾

0 投票
2 回答
445 浏览

c# - 如何使用 setmetatable 围绕 C# 对象创建 Lua 包装类

我正在为我目前正在使用 C# 开发的游戏创建一些 UI,并希望将所有内容都暴露给 Lua,以便我的艺术家可以进行小的调整,而无需在代码中做任何事情。我正在使用 MoonSharp 将 Lua 脚本集成到我的项目中。

这是我目前的 UIElement 包装类:

BLU_UIElement是我的 C# 类,它通过 MoonSharp API 暴露给 Lua。它在直接处理对象时可以正常工作,并且具有 SetPos、SetColor 等功能。

UIElement旨在成为我在 Lua 中的“类”,以包装和扩展我的 C# 对象。

当我在脚本的其他地方实例化 UIElement 并尝试调用函数(例如 SetPos)时,它确实正确地进入了 __index 函数。然而,rawget 调用总是返回 nil。它似乎也不是特定于 BLU_UIElement 的。我已经尝试过一些非常简单的方法,比如在构造函数中添加一个字符串 ID 值并尝试在 __index 函数中获取它,但它也返回 nil。

我假设我只是在类或对象本身上错误地设置了亚稳态,但我不确定问题出在哪里。我一直在看这里:http ://lua-users.org/wiki/ObjectOrientationTutorial了解我做错了什么,但我没有任何反应。

我很欣赏这方面的任何指导,我已经看了几天没有弄清楚,并且在线搜索通常只显示与我已经在做的类似的代码。

0 投票
1 回答
129 浏览

lua - 有没有办法在 If 语句中为 Wait 类添加时间?

几天前我开始学习LUA,在桌面模拟器游戏中开始了我自己的项目,但是我碰壁了。我无法为等待课程增加时间。

这是我尝试过的一个例子:

我需要该功能检查第一部分,如果为真,请在 1 秒后执行第二部分。如果没有,请正常执行第二部分并跳过“i = i + 1”。我的问题是该函数同时执行所有操作。我知道我做错了什么,但我不知道是什么。有没有办法创建一些门来按顺序或类似的事情做所有事情?

0 投票
1 回答
1527 浏览

lua - Accessing data found in another object/script

In Tabletop Simulator, how can I exchange information between objects?

Is there a way, for example, to create a global variable?

0 投票
0 回答
143 浏览

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

这里有一个非常相似的问题:How to call & await async C# method from Lua / MoonSharp script?

但这并不能解释争论。我希望这个例如运行:

然后能够在lua中做这样的事情:

0 投票
0 回答
20 浏览

c# - 为什么 MoonSharp 占用了我这么多的内存?

我正在制作一个游戏,您可以在其中创建自己的 LUA 代码来创建自定义 NPC。但是,每个脚本占用大约 1 兆字节。更糟糕的是,当我重新创建这些脚本时,那些旧脚本并没有被删除。一个有 100 个实体的关卡会占用 100MB 的内存,如果玩家死了 10 次,那就是 1 GB!即使只是创建一个没有注册任何用户数据的脚本仍然占用 2MB。这是加载关卡后大约 5 秒的快照:

4 MoonSharp.Interpreter.DataStructs.FastStack<MoonSharp.Interpreter.DynValue> 对象占用 4,194,528 字节

98MB 和接近 0% 的 CPU 使用率

注意:脚本占内存的 10%。

我查看了其中一个快速堆栈对象,其中包含大约 130,000 个空对象。即使我只是调用 new Script() 并使用它而不调用任何函数,仍然有很多内存被用完!如何减少脚本的内存使用量?如果没有任何效果,我正在考虑切换到 NLua,如果它更好的话。