问题标签 [lua-api]

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 回答
121 浏览

lua - 所需模块中的 Lua Registry

是否在调用状态注册表中采用的模块中访问的临时状态注册表中设置了键int luaopen_foo(lua_State*)

例如,假设我们有这个模块:

lua 代码需要这个模块:

foo注册表中的键是否state从调用状态进入注册表?

0 投票
1 回答
257 浏览

c - Lua:来自 C API 的新功能

我正在为我的游戏引擎开发脚本层。目前我正在使用一个脚本作为一个类,向名为 new 的“表”添加一个方法。这个函数基本上创建了类的实例化副本。当需要脚本实例时,我从 C API 调用此函数。

我的问题是:我怎样才能获取上面的 Lua 代码,并将其移动到 C 中,这样就不需要将它添加到我为这个系统编写的每个脚本文件中?

0 投票
1 回答
332 浏览

lua - 指向数字的指针

似乎在 Lua 中有对数字/布尔值/lightuserdata 的引用之类的东西。但是,在 Lua 中设置指向 C++ 本机类型(例如 float)的全局变量并在我更改 Lua 中相应的全局变量时自动更新的最简单方法是什么?

最后一行应该在 C++ 端自动更新 foo 。实现这样的目标的最简单方法是什么?

0 投票
2 回答
363 浏览

c - C 中的嵌套 Lua 元表

在 3D 场景中,我有一个想要使用 Lua 移动的位置的对象。

例如。box.position.x = 10

box 有一个元表(“Object”),因此有一个位置(“Vec”)。对象具有__newindex__index设置为分别调用 C 函数NewIndexObjectIndexObject。与 Vec (NewIndexVecIndexVec) 相同。

对象有一个 id,因此可以在存储在场景中的列表中识别它,当box.position访问时一切正常,调用 C 函数 IndexObject,我可以从堆栈中提取 id,它只是在box.position.x = 10执行“NewIndexVec”时被调用并且堆栈上唯一的东西是 {table, x, 10} 所以没有办法识别对象来改变它的 x 位置。

有没有将价值观推到当地国家?帮助!

更新:感谢您快速回复我,下面我已经尽可能地提炼了代码。如果您运行此代码,它似乎可以工作,但我有评论我被卡住了,它只是获取数组中的第一个对象,但我需要通过它的 ID 选择它,提前致谢

0 投票
2 回答
734 浏览

c++ - 如何使用 Lua C API 获取 .lua 脚本中所有表名的列表?

我有一个看起来像这样的 lua 文件:

我想得到 std::vector 它将包含文件中定义的所有表的名称:{“tableA”,“tableB”,“tableC”}

如何使用 Lua C API 做到这一点?

0 投票
2 回答
635 浏览

lua - luaL_loadbuffer 可以一次调用加载多个文件吗?

我知道如何通过luaL_loadbuffer. 现在我有很多Lua文件,100多个。我正在考虑如何加快加载过程。我想出的一种方法是:将所有文件放在一个文件中,然后使用加载这个文件luaL_loadbuffer(我做了一些测试,但只是得到了语法错误返回luaL_loadbuffer)。有人用过这种方法吗?或者有没有其他方法可以加快加载速度?

0 投票
1 回答
398 浏览

c++ - 将嵌套表从 Lua 传递到 C

我在 Lua 中定义了以下嵌套表。我需要将它传递到我的 C++ 程序中,以便我可以准确地读取它的值。我知道我可以使用

功能。但是在这种情况下,既然是嵌套的,我该如何处理呢?

0 投票
0 回答
224 浏览

c++ - 从每个 c++ 文件调用 lua 状态

我将lua添加到我的c ++项目中,现在我想知道是否可以设置“L”全局或类似的东西?

目前我在主要功能:

但在另一个文件上我需要调用这个函数:

但是“L”不起作用,我不想每次必须调用一个函数时都打开和关闭 Lua。

还是我应该使用

每次我需要调用一个lua函数?

0 投票
1 回答
1113 浏览

c++ - Lua API 推送用户数据

我正在尝试为我的组件系统提供脚本功能。当然,每个组件都有一个字段“parent”,它拥有对父 Actor 的访问权限。我可以编写代码,这样我就可以从 Lua 访问我的 C++ 方法,但是当我想返回自定义用户数据时遇到了困难,比如 actor。我有一个 getParent() 方法,我想返回 Actor 用户数据,所以我可以这样编写 Lua 代码:

我怎样才能做到这一点?使用轻用户数据?或者当 getParent 被调用时,创建一个新的用户数据,并将该指针指向原始用户数据?

0 投票
0 回答
681 浏览

lua - C lua 函数崩溃

我已经为 lua 制作了一个 C 模块作为我使用该package.loadlib函数在 Lua 中加载的 dll。该模块应该用于luaL_loadstring从字符串执行一些 lua 代码。我的 lua 脚本由我自己没有编写代码的应用程序运行,并且我的模块应该扩展应用程序的功能。在使用luaL_loadstring结果lua_pcall时,应用程序在某些字符串上崩溃,尤其是那些使用调用应用程序定义的某些 C 函数的函数的字符串(请注意,它不会在所有 C 定义的函数上崩溃,只是在其中一些函数上崩溃)。它在它不会崩溃的字符串上运行良好,在那些它确实崩溃的字符串上,我可以使用将 loadstring 的结果推送回 lua 并在那里执行它,这表明代码本身应该是有效的。

这就是我所说的:

对于可能导致这些崩溃的原因有什么建议吗?