我正在将演员添加到组中,这导致我的所有演员都无法参加。角色绘制方法使用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();
}


每当我删除演员时,组中的所有其他演员都会毫无问题地演出。我怎样才能解决这个问题?

最佳答案

您不能交错SpriteBatch和ShapeRenderer的开始/结束。调用actor的draw方法时,已经在SpriteBatch上调用了begin()。因此,您可以像这样修复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();
}


另外,请确保已设置形状渲染器的投影矩阵。

请注意,这会导致每个执行此操作的演员都需要额外的SpriteBatch刷新。

关于android - libgdx:当我使用Shaperenderer添加一个actor时,为什么我所有的actor都不渲染?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38313831/

10-08 22:54