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