首先我將解釋我想要做什麼以及後續處理,我將提供一個建議的解決方案。Java拆分框架之間的工作
問題
我運行一個遊戲,我想這樣做一定量的工作的每一個幀。例如,我有N個對象在隊列中等待初始化(假設初始化是一個相當昂貴的操作,N很大),並且在添加它們之後,我想創建它們的衝突框,然後,我想要將它們合併在一起以限制呈現調用。我不能在不同的線程上進行這些操作,因爲所有這些東西都與遊戲世界密切相關。但是我想把所有這些操作分成一塊大小的塊來運行每一幀,以便有最小的延遲(幀率下降)。我會如何去做這件事?
建議的解決方案
這將是很好有一個功能,可以一個電話後停下來,繼續在那裏再次調用它後離開:
例如,
boolean loadEverything() {
for (int i = 0; i < objectsToAdd.length; i++) {
world.add(objectsToAdd[i]);
if (i % 10 == 0) {
return stop();
}
}
makeCollision();
return stop();
mergeObjects();
return true;
}
呼叫loadEverything()
第一個objectsToAdd/10次一次向遊戲世界添加10個對象。然後調用它應該運行makeCollision()
然後停止。再次調用它將運行mergeObjects()
,然後函數返回true。在調用者函數中,我將運行loadEverything()
,直到它返回true。
我知道yeild-return,yield-break類似於here的實現存在,但我想知道是否有更一般的實現,或者可能存在一個不需要任何更好的解決方案額外的依賴關係。