2017-02-09 45 views
0

在我的遊戲中,按照特定的時間間隔調用一個函數,將多個節點添加到場景中(2到6個節點之間)。這些單獨的節點都是相同的 - 它們由相同的攪拌器模型,相同的SCNCone,相同的聚光燈和相同的物理體組成 - (攪拌器模型是低聚合物,沒有極端)。有效地添加和刪除多個節點,沒有任何延遲

當需要調用下一個節點間隔時,先前調用的節點將被刪除(包括其操作)。這個過程重複直到玩家死亡。現在,當節點被刪除並添加新的節點時,它會產生明顯的滯後大約一秒鐘,並且看起來並不平滑。

我想知道是否有更有效的方法來添加和刪除這些節點,可能可以消除滯後?由於這些節點都明顯相同,因此多次克隆一個節點會比在for循環內重複創建相同節點更好?

任何意見的效率或更好的做法,將不勝感激。

謝謝!只需要一個念頭,我是否應該在每個需要的位置都有一個節點,並且在需要的時候基本上不會隱藏並給予他們動作,一旦他們完成了工作,淡出,放回到初始位置位置,移除動作並隱藏?

這意味着我在任何時候都需要場景中的大約20個節點,但至少不需要再添加任何內容或刪除任何內容。

回答

1

通過打開統計信息開始。

scnView.showStatistics = YES; 

單擊屏幕左下角的+到統計屏幕。

什麼可能導致滯後?快速檢查是:

1. Is the geometry too complex? 
2. Are the textures too large? 
3. Are there too many draw calls? 

克隆效果更好。

1

是的,我認爲你的想法最終會避免滯後。如果添加的節點與正在移除的節點相同,則隱藏和重置它們會更有效。

如果您每次創建節點都可能導致延遲,甚至可以從場景中刪除並添加它們,而不是在需要時將它們創建,然後將它們存儲在陣列中以備可重用。