cocos2dでアプリを開発しています。アプリのアーキテクチャは非常にシンプルです。6 つのサブメニューから 1 つを選択できるメイン メニュー。タップするとサブメニューが起動します。メイン メニューには、Retina iPad で約 408 MB (removeUnusedTextures メソッドを使用しているため、最大 450 MB) かかったすべてのテクスチャをロードした後、高解像度 (Retina iPad の場合) のテクスチャが多数あります。
そして今、テクスチャを最適化する 2 つのシナリオがあります。
最初:アプリの開始時と、他のテクスチャが必要なときに最小限のテクスチャ セットをロードしています。
欠点:ディスクからデータをロードするためにアプリが一瞬フリーズするときにテクスチャをロードするとき。すべての cocos2d クラスがスレッド セーフであるとは限らず、すべてのテクスチャが同じ id( ) を使用していないと cocos が不平を言っているため、GCD を使用してテクスチャをロードできませんCCSprite is not using the same texture id
。(注: を使用して *.pvr.ccz ファイルをロードしていますCCSpriteBatchNode
2 番目: シーンの最初にすべてのテクスチャをロードします。
欠点:メモリ内でしばらくの間シーンを切り替えると、2 つのシーン (メニューとサブメニュー、特にサブメニューからメイン メニューに戻る場合) からのリソースが存在します。そのため、メモリが 600MB に増加し、iOS はアプリを強制終了し、クラッシュし、ハルマゲドンを引き起こします。
この問題を解決するには?インターネットで何かを見つけようとしましたが、運がありませんでした。
PS TexturePacker を使用して、テクスチャをできる限り最適化しました。