好現在的問題是:渲染/排序優化
- 我確實有這確實需要自上一幀
- 名單要由時間更新的對象的列表,需要由訂購
:纔得到畫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