UnityとGC
Tech Academyのメンターさんからメモリ管理を気にして実装できたら中堅という風に言われた(やりたい処理を実装できるのは当たり前で)。
C#では基本的にガベージコレクション(GC)というやつがいらなくなったメモリをいい感じに解放しているらしい。
しかし、**Unityでシーン再生中にGCが発生すると数フレーム飛ぶため、アクションゲームではシーン再生中にGCを発生させないようにしないといけない**らしい。
GCを発生させる条件とアクションゲームのリアルタイム性を損なわない対策
上のリンク先の記事によると、主なGC発生条件は「メモリが許容されるしきい値を超える場合」であり、これを防げばよいみたい。
で、極論対策としてはそのシーンを開始時にすべてのメモリ領域の確保を終わらせることみたい。
いや、無理じゃね。
実用に耐えうる手段また調べよう・・・
メモリ利用状況の確認
メンターさんに聞いた話しだととりあえずProfilerというやつでやるらしい。
ただ、具体的にどの部分でめっちゃメモリ食ってるとかはわかんないので、
Profilerで確認しながら実装していかないとまずいらしい。
一通り実装し終わったからさぁメモリの負荷みますか、だと詰むらしい。
メモリの限界値としては、経験上システムメモリの半分くらいに押さえておいた方がよいらしい。iPhoneだと800MBくらいが目安か、というところ。