好的,问题来了:
- 我确实有一个对象列表,自上一帧以来确实需要更新
- 列表需要在绘制之前按对象的 y 坐标排序
目前我用一个collection.sort和一个简单的比较器来做到这一点:
figureComperator = new Comparator<Actor>() {
@Override
public int compare(Actor o1, Actor o2) {
return (int) o2.getY() - (int) o1.getY();
}
};
渲染看起来像这样:
@Override
public void render(float delta) {
// clearing
Gdx.gl.glClearColor(0, 0, 0, 1f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
// act the character act in front
this.character.myAct(delta);
updateGameCam();
if (this.status == GameStatus.GAME) {
// just monster act now
this.figureStage.act();
}
this.figureStage.getActors().sort(figureComperator); // sort figures
// render background
this.map.drawBackground(); // draw background
// draw figures inclusive character
this.figureStage.draw(); //draw all figures
this.map.drawForeground(); // foreground
// render game HUD and act gameHud
this.gameHud.act(delta);
this.gameHud.draw();
}
所以我正在寻找一种更好的方法来提高速度。
我确实遇到了让演员在 list( figureStage
) 中进行自我排序的想法,而我确实更新了这些。但是当我使用它进行更新时,this.figureStage.act();
它不能那么容易。
所以我的问题是,是否有任何解决方案没有排序算法的复杂性来始终让这些对象按其位置排序?