v2.2 2.2版本中推薦的優化遊戲方式是將 SpriteBatchNode
對象設置爲 Sprite
對象的父節點。 雖然使用SpriteBatchNode
對象仍然是一個很是好的優化遊戲的方式,可是它仍然有必定的限制:git
Sprite
對象的孩子只能是 Sprite
(不然,Cocos2d-x 會觸發斷言)
Sprite
的父節點是 SpriteBactchNode
時,不能添加 ParticleSystem
做爲 Sprite
的子節點。Sprite
的父節點是 SpriteBatchNode
時,不能使用 ParallaxNode
Sprite
對象必須共享相同的紋理ID (不然,Cocos2d-x 會觸發斷言)Sprite
對象使用 SpriteBatchNode
的混合函數和着色器。雖然 v3.0 仍然支持 SpriteBatchNode
(與以前的版本擁有相同的特效和限制),可是咱們不鼓勵使用它。相反,咱們推薦直接使用 Sprite
,不須要再它做爲子節點添加到 SpriteBatchNode
中。github
可是,爲了能讓 v3.0 有更好的表現,你必需要確保你的 Sprite
對象知足如下條件:緩存
SpriteBatchNode
同樣)SpriteBatchNode
同樣)若是這麼作, Sprites
將會像使用 SpriteBatchNode
同樣的快...(在舊設備上大概慢了10%,在新設備上基本上察覺不出)函數
v2.2 和 v3.0 最大的區別在於:性能
Sprite
對象能夠有不一樣的紋理ID。Sprite
對象能夠有不一樣種類的 Node
做爲子節點,包括 ParticleSystem
。Sprite
對象能夠有不一樣的混合函數和不一樣的着色器。可是若是你這麼作,渲染器
可能沒法對它全部的子節點進行批處理(性能較低)。可是遊戲仍然能夠正常運行,不會觸發任何斷言。優化
總結:lua
SpriteBatchNode
只有當你須要一些額外的性能上提高(雖然很小),SpriteBatchNode
纔會是你最後的選擇(你須要對它的限制條件很熟悉)。code
注:對象
如上信息參考:https://github.com/fusijie/Cocos2dx-ReleaseNote-zh/blob/master/cocos2d-x_v3.0_release_notes.md遊戲
SpriteBatchNode示例: