- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的引擎中,目前,每个实体都有自己的 lua_State *
链接到它。实体基类有一个函数 linkScript(const char *scriptPath)
将调用 luaL_dofile(luaState, scriptPath)
.所有这些工作都很好,但游戏仍然很小。我一直在阅读,我注意到我正在做的事情被认为是不好的做法。建议我有一个全局lua_State *
并将所有函数加载到全局内存中。起初,我对自己说“好吧,够简单”,但很快我就遇到了一个问题:每个 Lua 文件都定义了自己的 init()
, tick()
并应用一些 EventHooks。如何分享全局lua_State *
没有每个脚本覆盖之前脚本对这些函数的定义?这些函数在每一帧和/或每次触发事件时被调用。我需要能够区分每个脚本的实现。
最佳答案
您基本上希望将每个脚本视为具有自己功能的对象。当您加载脚本并运行它时,您不希望它的函数进入全局命名空间,而是进入特定于它的表中,并拥有一个存储所有此类表的全局表。
有很多方法可以做到这一点,但想到的一种是:您创建一个全局表 allObjects,然后为您执行的每个脚本:
-- object1Script.lua
allObjects.object1 = {
init = function()
...
end,
tick = function()
...
end
}
allObjects
中创建不同的条目。表,
object1
对于第一个脚本,
object2
对于第二个脚本等。如果您不想命名脚本,您可以使用数组,即
allObjects.insert( { ... table of init, tick etc functions ...} )
.大概你会循环遍历 allObjects 表以适本地调用每个“对象”的 init() 或 tick() 等。
关于c - 如何在游戏引擎中使用全局 lua_State *?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20554600/
我有 2 个脚本,每个都处于不同的 lua_State。 我正在尝试能够从一种状态获取变量并在另一种状态下使用它。 我下面的代码适用于单个变量和单向数组。我能否获得一些关于使其也适用于多维数组的指导?
在我的引擎中,目前,每个实体都有自己的 lua_State * 链接到它。实体基类有一个函数 linkScript(const char *scriptPath)将调用 luaL_dofile(lua
现在假设您有两个具有不同 lua 实例的程序。一个是主程序,第二个是你为它编写的dll。 在我的问题中,我将从现在开始将主程序命名为 main, dll i child。我们将子进程加载到主进程中,绕
我的服务器应用程序同时使用 LuaJit 运行 Lua 脚本。每个内部 C++ 脚本类存储自己的 lua_State 表示。 我想要实现的是实现某种共享线程池,以避免从每个正在运行的脚本中产生大量线程
对于一个学校项目,我使用 Lua 向游戏引擎添加一些脚本功能。引擎加载速度很慢,所以我希望能够重新加载脚本,而不是每次更改我的 Lua 脚本时都必须重新启动它。我希望能够以安全可靠的方式执行此操作,即
所以我正在尝试为 lua 和 irrlicht 编写一个程序,目前我正在制作一个函数来创建一个可以从命令行实时调用的网格(在本例中是一个简单的三角形)。 例如,当程序运行时,如果我在命令行中写“add
我想在我的程序中使用一个全局 lua_State* 变量,通过 initLua() 函数初始化它,并使用它从 main() 运行一些 Lua 函数。当我尝试时,Lua 代码根本无法运行。将来,我想使用
我需要使用 C++ 中的套接字将 lua_state 发送到服务器。我如何序列化 lua_State 以便它可以通过网络发送? 最佳答案 根据您的需要,您有多种选择。您可以尝试使用 Pluto Lib
我猜不会(或者,如果可能的话,几乎肯定不值得我花时间)。 我的想法是构建一个包含 offset_ptr 的镜像对象,该对象也位于类中,拥有子进程可以使用的 lua_State获取指向状态的相关指针的位
我在一个 Lua 脚本中有一个表,我想与其他 Lua 脚本共享,这些脚本在不同的 lua_State 中加载,因此它们可以调用该表中的方法。有可能吗? 最佳答案 不,除非您手动复制状态之间的数据。 L
上下文:我正在研究一组绑定(bind),我的许多函数都引用了“全局”Lua 状态。 (在我正在开发的代码中,它实际上并不是全局的,而是特定运行时实例的局部变量,因此全局,所有回调函数都可以访问共享状态
如何为 lua_State 设置一次全局 C++ 指针。并从 C 函数中获取它。 Context *context = new Context(); lua_State *lua = luaL_new
我正在为 Lua 编写 C++/OOP 包装器。我的代码是: class LuaState { boost::shared_ptr L; LuaState(): L( luaL_n
我们在多台计算机上工作,执行一个用 c/c++ 编码并使用 lua api 的程序,每台计算机都因不同的错误而崩溃。它通常要么是段错误,其回溯将我们引向 bu liblua 调用,要么是通常在尝试调用
所以有一个 main_window 类来处理所有事情,这里重要的是敌人的 Vector,敌人,当敌人死亡时,它会将一个效果对象推回到 Effect 的 vector 中。这是方便的地方 lua_Sta
我在 visual studio 2010 中使用 Lua ver 5.2.3,当我编译下面的代码时 #include "stdafx.h" #include "lua.h" #include "la
我是一名优秀的程序员,十分优秀!