从逻辑上讲,我的游戏可以分为两个共存的部分:
- 实体(
Actor
)进入、退出和交互的实际游戏。 - 游戏的“元部分”,其中图像和/或文本出现和消失。这是一种 HUD,但不完全是因为它的实体(
Actors
)可以出现在屏幕上的任何位置并且是动态的。
第 1 部分中的 Actor
不会与第 2 部分中的 Actor
交互,反之亦然。
目前,我已将这两个部分实现为Stages
,并且效果良好。主循环基本上如下所示:
public void render(float delta) {
// ...
mainStage.act();
mainStage.draw();
metaStage.act();
metaStage.draw();
}
分成两个阶段
只是为了代码的简洁和逻辑性。我的问题是我是否在性能方面付出了高昂的代价?也就是说,从性能角度来看,在两个阶段而不是一个阶段绘制一定数量的 Actor 是否要昂贵得多?
最佳答案
几乎不会对性能产生任何影响。可能需要一个额外的绘制调用,因为第一个阶段在第二个阶段开始绘制之前被刷新。如果您使用按钮,您的 UI 可能已经有很多绘制调用(您可以通过在按钮上调用 .setTransform(false)
来减少调用)。如果按钮或表格保留默认打开的转换,那么它们总是会导致批量刷新。
如果让每个阶段都有自己的 SpriteBatch,则可能会浪费内存。但是,通过实例化 SpriteBatch 并将其传递给两个阶段的构造函数,可以轻松避免这种情况。
关于java - 将两个阶段一个放在另一个之上是一个坏主意吗? libgdx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29334259/