问题标签 [luabridge]
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.
luabridge - luabridge 绑定 C++ 成员,但不更改成员值
我有一个使用 luabridge 的问题,它更改 C++ 值失败,例如:
//c++文件
绑定代码如下:
lua 文件如下:
现在我的问题是为什么 eta.coor3D_1.lon = 11 不起作用?我发现那个双“。” 不管用....
c++ - 从 LUA 脚本调用 C++ 类函数
我正在尝试学习如何使用 lua/luabridge 来调用类的成员函数,但我遇到了一些麻烦:
这是一个简单的测试类:
以及使用它的代码:
最后,lua 脚本:
这里可能有几个错误,但具体来说,我想做的是proxy
从 lua 脚本调用实例的成员函数,就好像我在调用:
我知道有很多类似的问题,但到目前为止我还没有找到直接回答我的问题。
目前脚本甚至没有加载/执行,所以我有点困惑。
c++ - Luabridge 绑定重载运算符
我编写了一个简单的 vec3 类,它实现了 */+- 运算符:
我希望通过 luabridge 绑定这些运算符,在某种程度上类似于:
这样我就可以像这样调用lua中的函数:
当我在 vec3 类的 *operator 中放置断点时,它确实命中了它,但 rhs 浮点数未定义。
如果我将lua代码更改为:
那么 rhs vec3 也是未定义的。所以看起来参数没有被正确传递。
然后我将注册更改为:
但是现在vec3的成员数据,或者float参数是未定义的。如果我越过这个断点,luabdridge 会抛出以下异常:
我唯一能想到的是我没有正确注册该功能。
所以我的问题是这样的:如何正确绑定运算符,并确保参数类型正确,以及如何在lua中正确调用它?
c++ - 向 lua 公开正确的工厂类
所以我正在编写一个工厂系统来创建对象并使用 lua 来调用它们。但是我正在努力弄清楚如何使用 luaBridge 将它们暴露给 lua。
我有一个模板工厂:
注册函数调用从虚拟创建派生的继承模板创建类,以创建从基对象派生的特定类型的对象。
在 C++ 中,工厂是这样使用的:
我是否必须将 BaseObject 和 BaseCreator 等虚拟基类公开给 lua,以便我使用 lua 创建它们的派生类型?我已经尝试过了,但在创建抽象对象时出现错误。如果我必须公开低音类,或者是否有另一种更适合处理此任务的脚本语言,有没有办法解决这个问题?
c++ - 使用 LuaBridge 或 Lua 将 C++ 对象传递给 Lua 函数
我有一个用 C++ 构造的大对象(我已经暴露给 Lua),我想在 Lua 中处理。
我可以使用 将任何简单类型传递给 Lua 函数 ( int
, string
) lua_pushinteger
,lua_pushstring
但不能使用 C++ 类。我尝试lua_pushlightuserdata
过将指针推送到我的对象,但没有运气。
我怎样才能做到这一点?这甚至可能吗?
请注意,我想将一个用 C++ 构造的特定实例传递给 Lua。我可以公开构造函数并简单地使用类,但我需要使类成为单例。这是不可接受的。
c++ - 使用 LuaBridge 将 LuaJIT 绑定到 C++ 会导致“PANIC: unprotected error”
Windows 10 x64、MSVC 2017、LuaJIT 2.0.5。
我在网上搜索,但答案没有帮助。
基本上我正在尝试遵循本手册,除了我必须#include <LuaBridge.h>
在 Lua 包含之后放置,因为否则说 LuaBridge 应该在 Lua 包含之后是行不通的。
但是,我收到以下错误:PANIC: unprotected error in call to Lua API (attempt to call a nil value)
.
我不知道为什么。如果您需要更多信息 - 请说什么。
脚本.lua:
c++ - 没有“luaL_openlibs(L)”,Luabridge 无法工作
如果没有以下行,我将无法使用 luabridge:
而且我什至不使用它的库函数。
我收到此错误:
断言失败:lua_istable (L, -1)
只是我添加了“luaL_openlibs(lState)”,没有出现任何问题,但我不想使用 lua 的库并想确保它们不被包含在内。
我的主要功能:
c++ - 使用 LuaBridge 和 C++ 处理 Lua 模块时出错
我无法在另一个 Lua 文件中包含一个 Lua 文件。我正在使用 C++ 和 LuaBridge 编译 Lua。这是我的主要功能。非常非常小。
这是我的“script.lua”文件:
以及位于 SAME 目录中的“mymath.lua”。
该程序只是崩溃。只需删除 "mymathmodule = require("mymath")" 行就不会出错。这里有什么问题??
c++ - 如何在没有变量问题的情况下加载多个脚本
我有一个类,我用它来阅读 Lua,我想制作它,以便您可以一次加载多个脚本并且不冲突,即 Lua 变量的值在执行另一个脚本时保存在第一个脚本中。
我希望程序输出它-
但她拿出来——
这是我的代码:
我正在使用 Luabridge
c++ - 更改 lua_thread 的 _ENV(使用 C API)
这适用于多人游戏,其中 NPC 脚本将作为函数块加载并缓存在单个 lua_State 上,然后每次玩家与 NPC 交互时,都会创建一个新的 lua_thread,从全局 lua_table 获取缓存的函数并推送到线程的堆栈上,然后线程被恢复(npc 脚本在完成之前产生了几次)。
我正在尝试使用 C API 更改 lua 线程的环境,以便已加载/运行的函数将无法更改全局变量/让它们被运行在不同线程上的其他函数更改。
通过将此代码添加到脚本的开头,我通过更改函数环境实现了预期的结果。但是,我想使用 C API 端来执行此操作,这样我就不必将此代码粘贴到每个脚本中。
示例代码 + 所需/当前输出
npcA.lua
npcB.lua
我希望 npcA 打印
和那个 npcB 打印
当前的输出是(这不是我想要的)
如果 npcA 先运行 npcB 将打印
如果 npcB 先运行然后让步,则 npcA 运行,然后 npcB 恢复。npcB 会打印
这是有问题的