在libgdx中使用不同屏幕处理游戏精灵的最佳方法

时间:2017-10-25 19:37:33

标签: java libgdx

另一天,另一个问题。

我有一个sprite,其中包含livesRemaining

等字段

让我们说在主游戏画面中我掉下来并使用setScreen方法将屏幕切换到“剩余生命”屏幕。我的问题是livesRemaing字段现在丢失了。

我的问题是处理这些应该在屏幕之间转换的“全局游戏变量”的最佳方法是什么。

我应该:

  1. 在游戏类中创建一个精灵并将其传递给不同的屏幕?
  2. 在每个屏幕上创建一个新精灵并将“全局游戏变量”保留在主游戏类中?
  3. 我不确定是否有最好的解决方法,或者仅仅是品味问题。

    任何建议都将不胜感激。

    提前致谢!

3 个答案:

答案 0 :(得分:1)

使用缓存可以避免对象创建/销毁(由于“实时”游戏中的垃圾收集器,这在Java上很昂贵)。您似乎需要一个更好的数据结构来处理所有游戏设计以避免这些问题。您的选项1是最接近成为好选择的方法,但它取决于一般设计。

答案 1 :(得分:1)

我有一个静态类,其中包含对我的游戏,游戏屏幕和游戏相机的静态引用。

我这样做,您可以随时随地访问游戏的任何组件。

IE 游戏玩家 要么 gamecamera.unproject()

答案 2 :(得分:0)

我发现你的问题非常有趣,因为我最终遇到了问题/怀疑。如果我最终创建了一个 ECS 系统实体)系统,我最终看到将精灵值传递到下一个屏幕除了带来的内存成本一个糟糕的ECS系统练习,所以我决定为玩家创建全局变量,因为如果你意识到世界在玩家之上旋转并且它具有存储玩家生命信息的重要性,但有一点我可以告诉他你是因为我们可以用不同的方式拥有系统,就像francogp所说的那样,这完全取决于你所使用的设计和设计模式。