有两个阶段一个在另一个上面是个坏主意吗? libgdx

时间:2015-03-29 20:11:15

标签: java performance libgdx

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

  1. 实体(Actors)进入,退出和互动的实际游戏。
  2. A" meta part"游戏中,图像和/或文本出现和消失。这有点像HUD,但不完全是因为它的实体(Actors也可以)出现在屏幕上的任何地方并且是动态的。
  3. 第1部分中的Actors不与第2部分中的Actors互动,反之亦然。

    目前,我已将这两个部分实施为Stages并且效果很好。主循环基本上如下所示:

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

    分离成两个Stages只是为了清洁和逻辑代码。我的问题是我是否付出了高性价比?即,以两个stages而不是一个来吸引一定数量的演员,是否更加昂贵,表现明智?

1 个答案:

答案 0 :(得分:1)

几乎没有任何性能影响。可能是一个额外的绘制调用,因为第一个阶段在第二个阶段开始绘制之前被刷新。如果您使用按钮(可以通过调用.setTransform(false)来减少),您可能已经为UI进行了大量的绘制调用。如果保留一个Button或Table,其默认值为transform,那么它们每个都会导致批量刷新。

如果让每个阶段都拥有自己的SpriteBatch,则可能会浪费内存。但是,通过实例化SpriteBatch并将其传递给两个阶段的构造函数,可以轻松避免这种情况。