好现在的问题是:渲染/排序优化
- 我确实有这确实需要自上一帧
- 名单要由时间更新的对象的列表,需要由订购
:才得到画figureComperator = new Comparator<Actor>() { @Override public int compare(Actor o1, Actor o2) { return (int) o2.getY() - (int) o1.getY(); } };
现在我这样做有collection.sort和简单comperator对象Y的koordinate
渲染确实是这样的:
@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();
}
,所以我在寻找一种更好的方式来提高这个速度。
我确实碰到让演员在列表中排序的想法(figureStage
),而我更新了这些。但正如我所做的更新与this.figureStage.act();
我无法做到这一点。
所以我的问题是,如果有任何解决方案没有排序算法的复杂性总是有这些对象按其位置排序?
您是否可以将演员放在SortedSet中,以便始终对演员进行排序,而不必完全重新排序? – Joni
不确定,因为它们在运行时确实会改变它们的y位置。 – BennX
发生这种情况的频率如何? – Joni