2016-01-21 85 views
2

我想以前有人肯定已經提出過這個問題,但現在我找不到它,所以在此期間,當SceneKit動畫停止時,SceneKit上的SpriteKit覆蓋的動畫會停止

當SceneKit動畫停止時,SceneKit上的SpriteKit疊加動畫會停止。這是意想不到的。這就像整個SCNView和它的孩子一旦3D內容不移動就進入睡眠狀態。我怎樣才能讓spritekit場景獨立於scenekit場景做動畫? 更新:我已經確認,如果我添加一個簡單的3D盒子,無限期旋轉並將其保存在視圖中,3D場景不會「睡眠」,覆蓋也不會。有沒有設置某處停止SceneKit部分睡眠?我使用SCNView.overlaySKScene。我有一個無限重複動畫的覆蓋層的子節點之一。只要SceneKit場景中的動作和/或動畫進行,疊加2D內容也會動畫,但3D動畫停止後立即停止。

iOS 9.2.1。

回答

6

只有當SceneKit視圖知道存在動畫時,纔會運行其更新/渲染循環。 (因爲如果渲染的內容沒有變化,渲染只會浪費CPU/GPU的時間並消耗電池電量。)

SceneKit在猜測它應該運行渲染循環時相當保守。如果場景中有CAAnimation s或SCNAction s,或者物理引擎正在做某件事情,它就會運行,但我認爲這是關於它的。

如果你有其他想要運行渲染循環的東西(比如覆蓋SKScene需要運行自己的遊戲循環),只需將視圖的playing屬性設置爲true即可。

+0

謝謝,它的工作。我不知道爲什麼.overlaySKScene不應該包含在那種保守的猜測中。要麼是錯誤,要麼是在.overlaySKScene參考文件中可以更清晰地表達出來...... – Jonny

+0

SpriteKit場景也可能不會一直動畫。但是也許SceneKit可能會更好地確定SpriteKit何時想要動畫。如果您有想法,我相信他們會欣賞[功能請求](http://bugreport.apple.com)。 – rickster

+1

好吧,我實際上報告這是一個錯誤。 :-) – Jonny