将两个阶段一个放在另一个之上是个坏主意吗? libgdx

Is having two stages one on top of the other a bad idea? libgdx

从逻辑上讲,我的游戏可以分为并存的两个部分:

  1. 实体(Actors)进入、退出和交互的实际游戏。
  2. 一个 "meta part" 的游戏,其中图像 and/or 文本出现和消失。这是一种 HUD,但不完全是因为它的实体(Actors 也可以出现在屏幕上的任何位置并且是动态的。

第 1 部分中的 Actors 不会与第 2 部分中的 Actors 交互,反之亦然。

目前,我已经将这两个部分实现为 Stages,并且运行良好。主循环基本上是这样的:

public void render(float delta) {
    // ...         
    mainStage.act();
    mainStage.draw();

    metaStage.act();
    metaStage.draw();
}

一分为二Stages只是为了代码的简洁和逻辑。我的问题是我是否为性能付出了高昂的代价?也就是说,在性能方面,将一定数量的演员分为两个 stages 而不是一个,是否更昂贵?

几乎不会对性能产生任何影响。可能是一个额外的绘制调用,因为第一阶段在第二阶段开始绘制之前被刷新。如果您使用按钮,您可能已经为您的 UI 调用了很多绘图调用(您可以通过调用它们来减少 .setTransform(false))。如果 Button 或 Table 保留默认的转换打开状态,那么它们总是各自导致批量刷新。

如果让每个阶段都有自己的 SpriteBatch,则可能会浪费内存。但这很容易通过实例化一个 SpriteBatch 并将其传递给两个阶段的构造函数来避免。