C ++的多个状态的Lua

问题描述 投票:1回答:1

我想使用多个游戏对象相同的LUA文件

第二档:

function onUpdate()
    if Input.isKeyDown(Keys.d) then
        actor.x = actor.x + 0.1
    end

    if Input.isKeyDown(Keys.a) then
        actor.x = actor.x - 0.1
    end

    if Input.isKeyDown(Keys.w) then
        actor.y = actor.y + 0.1
    end

    if Input.isKeyDown(Keys.s) then
        actor.y = actor.y - 0.1
    end
end

它是一个很好的做法,有一个lua国家为每个对象或者我应该使用相同的状态相同的文件和游戏对象调用脚本(我想避免使用表,因为我将不得不之前更新了“演员”的全局变量变量和函数调用)之前,使用的表名(我不知道是否有任何其他的解决办法...我是新来的LUA)

c++ lua game-engine
1个回答
0
投票

虽然是好的,你可以在一个程序中有很多Lua的状态,记住,每个人确实需要一些内存。如果有一个很好的理由,为什么你应该保持两个环境完全不同,如安全性concearns,或者可能会或可能不会在同一时间需要风马牛不相及的子系统,那么它肯定是值得的。

否则,它通常是更好,更易于管理有一个单一的Lua状态。


如果您需要逻辑的不同块之间强烈的分离,Lua中有你覆盖:

协同程序

如果您需要有要暂停和恢复以后逻辑的几个街区,你可以简单地包裹起来的协同程序。这可以很容易地在C做的很好,让你做你最可以用不同的Lua美国做什么。

环境

虽然这些前和Lua 5.2后的工作有所不同,其基本思想是一样的:你可以改变什么“全局”变量是可见的代码的一部分,即使使用元表访问其他数据或生成它的飞行。


有了这两个,你真的应该没有太多需要单独的Lua在游戏状态。一个例外规则显然是多线程;你不应该有一个以上的线程可以访问相同的Lua状态,除非你使用某种形式的锁定机制,因此它将使意义有每个线程的一个状态,并为他们设立从内部C.交流的方式

© www.soinside.com 2019 - 2024. All rights reserved.