質問: new AudioClip[1]; // 効果音200個の管理 と変数を作り、Inspector上で全部1つずつ加えて、直接配列を指定して利用していました。 「ゲームが重くなるからFindなどは使わずこうした方が良い」という記述を見て その通りにやっていたのですが、 このやり方がメモリを1.6GBも使う原因になっていたのでしょうか? 今のやり方では数週間前のバックアップから作り直しても同じ事になるので メモリを使い過ぎない手法があれば教えては頂けませんでしょうか。
回答: ・まずテクスチャの圧縮設定の見直し ・それでもダメなら、スプライト(テクスチャ)を必要に応じて生成・破棄するように対応 といった感じでしょうか。 > > 計41MBのアルファ付きPNG(2500枚) > > > PNGファイルでは合計で41MBかも知れませんが、テクスチャのインポート設定(圧縮設定)次第で使用するメモリサイズは変わります。 例えば、512x512サイズの画像を無圧縮(RGBA32)で使う場合は1枚あたり 1MBが最低必要。2500枚ともなると合計 2.5GBほど必要になります。まずは圧縮設定を見直してみましょう。 > > public GameObject[] spriteParts = new GameObject[1]; // スプライト2500枚の管理 > > > 常にメモリ上に持っておくには量が多すぎです。スプライト2500枚というか、テクスチャ2500種類を同時に使うのでなければ、必要なものだけを必要なときに生成し、不要になったら破棄する、という仕組みが必要です。単純なカジュアルゲームでない限りこの仕組みは必須でしょう。 「ゲームが重くなるから〜」というのも、動かないことには気にしても無意味になってしまいます。