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

标签 java performance libgdx

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

  1. 实体(Actor)进入、退出和交互的实际游戏。
  2. 游戏的“元部分”,其中图像和/或文本出现和消失。这是一种 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/

相关文章:

java - 在 libgdx 中按名字获取 Actor

c# - 使用 System.Linq 占用多少空间?

performance - Groovy I/O 性能问题

java - Libgdx Freetype 字体生成器错误

java - Fragment 中的 RecyclerView - 尝试调用虚拟方法

java - FAT JAR 外部的 Spring Boot 属性

java - Java Swing 的 BDD 框架?

java - 从java文件获取android项目的字符串资源

c++ - 为什么SSE和AVX的效率一样?

java - Android libgdx : splash screen not showing immediately after launcher icon pressed