【Cocos2dx 3.3 Lua】SpriteBatchNode和SpriteFrameCache使用

精靈幀緩存類
1、SpriteFrameCache
    精靈幀緩衝類SpriteFrameCache用於存儲精靈幀,SpriteFrameCache是一個單例模式,不屬於某一個精靈,是全部精靈共享的:
說明:
        @js NA 
        @lua  NA
    表示的意思是:
    
 
具體實例:
    
 
2、SpriteBatchNode
Sprite 和 SpriteBatchNode

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 對象知足如下條件:緩存

  • 貢獻相同的紋理ID(把它們放在一個spritesheet中,就像使用 SpriteBatchNode 同樣)
  • 確保它們使用相同的着色器和混合函數(就像使用 SpriteBatchNode 同樣)

若是這麼作, Sprites 將會像使用 SpriteBatchNode 同樣的快...(在舊設備上大概慢了10%,在新設備上基本上察覺不出)函數

v2.2 和 v3.0 最大的區別在於:性能

  • Sprite 對象能夠有不一樣的紋理ID。
  • Sprite 對象能夠有不一樣種類的 Node 做爲子節點,包括 ParticleSystem
  • Sprite 對象能夠有不一樣的混合函數和不一樣的着色器。

可是若是你這麼作,渲染器 可能沒法對它全部的子節點進行批處理(性能較低)。可是遊戲仍然能夠正常運行,不會觸發任何斷言。優化

總結:lua

  • 保持將全部的精靈放在一張大的 spritesheet 中。
  • 使用相同的混合函數(使用默認)
  • 使用相同的着色器(使用默認)
  • 不要將精靈添加到 SpriteBatchNode

只有當你須要一些額外的性能上提高(雖然很小),SpriteBatchNode 纔會是你最後的選擇(你須要對它的限制條件很熟悉)。code

注:對象

        如上信息參考:https://github.com/fusijie/Cocos2dx-ReleaseNote-zh/blob/master/cocos2d-x_v3.0_release_notes.md遊戲

 

SpriteBatchNode示例:

  

相關文章
相關標籤/搜索