0
我已經將CCSprite子類化爲FMObject作爲我的遊戲對象的基類。這個類創建一個b2Body並使用CCSpriteBatchNode。問題是,製作FMSpaceShip的多個副本將會生成多個CCSpriteBatchNode對象,這些對象都使用相同的png。這會導致png被一次又一次加載,還是會有一些優化?使用相同的PNG多個CCSpriteBatchNode(cocos2d)
我已經將CCSprite子類化爲FMObject作爲我的遊戲對象的基類。這個類創建一個b2Body並使用CCSpriteBatchNode。問題是,製作FMSpaceShip的多個副本將會生成多個CCSpriteBatchNode對象,這些對象都使用相同的png。這會導致png被一次又一次加載,還是會有一些優化?使用相同的PNG多個CCSpriteBatchNode(cocos2d)
是的,您可以依靠Cocos2D內部緩存優化。紋理將在CCTextureCache中僅加載一次,並且將由每個批處理節點引用,並使用引用計數。
也就是說,如果我正確閱讀你的描述,那麼不應該爲每個精靈創建一個批處理節點。您應該考慮在CCSprite類的外部創建一個批處理節點,然後讓您的精靈(或派生的FMSpaceShips)使用該單個批處理節點進行渲染。
在某些情況下,創建多個批處理節點仍然很有用 - 例如,當您希望它們在不同的zOrder上渲染時(例如,您總是需要在主宇宙飛船精靈後面渲染雲彩精靈)。
同意,一個批處理節點應該保持儘可能多的精靈。每個精靈的一個批處理節點只是浪費。 – LearnCocos2D
感謝你的理解,我打算讓一個批處理節點「池」存儲一個不同批處理節點的字典,並且我會通過名稱等請求一個批處理,從而減少使用相同spritesheet png的batchNode對象的數量。沒有確認需要就不想完成所有的努力。當然,使用盡可能少的批次節點總是理想的。 –