我正在将一个 Actor 添加到一个组中,这导致我的所有 Actor 都无法显示。 actors 绘制方法使用 Shaperenderer,如下所示
@Override
public void draw(Batch batch, float parentAlpha) {
super.draw(batch, parentAlpha);
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
shapeRenderer.rectLine(ax, ay, bx, by, 5);
shapeRenderer.end();
}
每当我删除 Actor 时,组中的所有其他 Actor 都可以毫无问题地表演。我该如何解决这个问题?
最佳答案
您不能交错 SpriteBatch 和 ShapeRenderer 的开始/结束。当调用 actor 的 draw 方法时,begin()
已经在 SpriteBatch 上被调用了。所以你可以像这样修复你的 draw()
方法:
@Override
public void draw(Batch batch, float parentAlpha) {
super.draw(batch, parentAlpha);
batch.end();
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
shapeRenderer.rectLine(ax, ay, bx, by, 5);
shapeRenderer.end();
batch.begin();
}
还要确保您已经为形状渲染器设置了投影矩阵。
请注意,您正在为执行此操作的每个 actor 导致额外的 SpriteBatch 刷新。
关于android - libgdx:当我使用 Shaperenderer 添加 Actor 时,为什么我的所有 Actor 都没有渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38313831/