问题标签 [lua-c++-connection]

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 投票
3 回答
3481 浏览

c++ - Lua 和 C++:职责分离

请帮助对组织 C++/Lua 游戏代码的方式进行分类并区分它们的职责。最方便的方法是什么,你用哪一种?

例如,Lua 可以仅用于初始化 C++ 对象,也可以在每次游戏循环迭代时使用。它可以仅用于游戏逻辑,也可以用于图形。一些游戏引擎可以完全控制脚本中的所有子系统!我真的不喜欢这种方法(根本没有分离)。

将所有游戏对象(npc、位置)实现为没有 C++ 对象的 Lua 表是一个好主意吗?或者最好是镜像它们(控制 C++ 对象的 Lua 表)?或者是其他东西?

谢谢你。

编辑。我的分类:Lua 和 C++:职责分离

话题继续:Lua、游戏状态和游戏循环

0 投票
9 回答
12175 浏览

c++ - Lua,游戏状态和游戏循环

  1. 在每次游戏循环迭代时调用 main.lua 脚本——这是好的还是坏的设计?它如何影响性能(相对)?

  2. .维护游戏状态。C++ 主机程序或b。来自 Lua 脚本或c。从两者同步它们?

(关于该主题的上一个问题:Lua 和 C++:职责分离

(我投票给每个答案。最好的答案将被接受。)

0 投票
2 回答
10698 浏览

c++ - 在 Lua 表中注册 C 函数

如何在 Lua 中注册一个 C 函数,但不是在全局上下文中,而是作为表字段?

0 投票
3 回答
3194 浏览

c++ - 返回字符串向量的最简单的lua函数

我需要一个非常简单的 c++ 函数,它调用一个返回字符串数组的 lua 函数,并将它们存储为 c++ 向量。该函数可能如下所示:

(其中 lua 源代码包含一个返回字符串数组的 lua 函数)。

有任何想法吗?

谢谢!

0 投票
3 回答
1113 浏览

c++ - 将成员函数添加到绑定到 Lua 的 C++ 类

我一直在研究如何将 C++ 类绑定到 Lua 以在游戏引擎中使用,我遇到了一个有趣的问题。我一直在关注这个网站上的教程:http: //tinyurl.com/d8wdmea。在教程之后,我意识到他建议的以下代码:

只会将 pounce 函数添加到 Monster 的特定实例。所以我将他建议的脚本更改为以下内容:

但是,当我调用 pounce 函数时,脚本会中断。经过进一步测试,我能够成功调用 pounce 函数的唯一方法是将该函数作为 Monster 类的静态成员调用(该函数的代码保持不变):

从语法上讲, badguy:pounce(5,1) 是正确的,但没有正确调用该函数。我只是做错了什么,还是这是lua和c ++之间绑定的限制/我如何绑定这两种语言?

0 投票
1 回答
2534 浏览

c++ - luaL_dostring 什么都没有放在堆栈上?

我正在尝试学习将 Lua 与 C++ 接口的基础知识,但我遇到了一个问题。我想调用一个返回字符串的函数,然后在 C++ 端使用该字符串,但 luaL_dostring 似乎什么都没有放在 Lua 堆栈上。

即使是一个简单的测试似乎也无法正常工作:

输出:

有任何想法吗?

0 投票
1 回答
1811 浏览

c++ - 存储和返回 Lua 用户数据

我在 C++ 中有以下类

以及部分lua绑定代码:

我想将这些作为用户数据包装在 Lua 中,这样我就可以执行以下操作:

当我打印的地址时bb2我得到两个唯一的地址,这是有道理的,因为我已经调用了lua_newuserdata. 但理想情况下,我希望它返回相同的用户数据,因为它们指向相同的内存块。如何做到这一点?

我希望 Lua 负责内存,因此它会在垃圾收集时被正确删除。所以我不知道轻用户数据是否可能。

0 投票
3 回答
4141 浏览

c++11 - 单个 Lua 状态下的多个脚本并使用 _ENV

我目前正在学习如何使用 Lua C API,虽然我已经成功地在 C/C++ 和 Lua 之间绑定了函数,但我有几个问题:

  1. 将多个脚本加载到一个脚本中是个好主意lua_State吗?有没有办法关闭特定的块?如果不再使用脚本,我如何lua_State在保留其他所有内容的同时将其清除?

  2. 使用可能对函数/全局变量使用相同名称的脚本的最佳方法是什么?如果我加载所有这些新定义会覆盖旧定义。

    在线阅读后,我认为我需要将每个加载的块分开到不同的环境中。我设想这种工作的方式是,每次加载一个块时,我都会为其分配一个唯一的环境名称,当我需要使用它时,我只需使用该名称从中获取环境LUA_REGISTRYINDEX并执行操作。到目前为止,我还没有弄清楚如何做到这一点。网上有例子,但他们使用 Lua 5.1。

0 投票
1 回答
3126 浏览

lua-5.1 - How to create table in table in Lua 5.1 using C-API?

I need to create construction like this in Lua 5.1 C-API, not in Lua 5.2 and above

Expected Result: GOOD

Thanks for answers!

0 投票
1 回答
1219 浏览

lua - 如何创建名称为 C-API 的 Lua 表

如何从 C-API 创建 Lua 表,如下所示:

如何设置表名?我只知道如何创建表和放置值,但不知道如何设置表名。

创建无名称表的代码: