2016-05-26 38 views

回答

1

SKShapeNode是相當性能密集型因爲SpriteKit是光柵化(計算你的形狀的像素)框架,而不是一次計算它的比重新使用。

兩個選項我看到的是:

  • 創建SKTexture(一個或多個)目標(S)與你的形狀節點,並且比SKSpriteNode顯示的紋理,而不是直接顯示您的SKShapeNode對象。
  • 使一些/所有的SKEffectNodeSKShapeNode對象的孩子,並設置其屬性shouldRasterizetrue,它的意思是,它會rasterise的SKEffectNode孩子一次,緩存什麼被渲染和重用它,而沒有任何改變。

你應該使用什麼取決於你試圖實現什麼,這些節點的形狀隨時間而變化?這些形狀是在四處移動嗎?它們全部是在變化/移動還是隻有其中的一部分?

+0

謝謝,特雷弗安妮丹尼斯!我正在使用這些形狀只是爲了移動,如果它需要刪除,一次又一次地產生新的形狀。那麼對我來說第一個選擇更好嗎? –

+1

@NurassylNuridin歡迎您,只需記住一件事:緩存只有在不改變形狀的情況下才非常有效,因此緩存不會改變的內容。如果您只想移動某些節點,請直接移動緩存它們的節點,以便它只是「移動紋理」,而不是重新繪製所有內容。 –

+1

但順便說一下,我相信在某些情況下,移動SKEffectNode可能會觸發其子節點的「新渲染」。 –