コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】GC の発生を抑える ~文字列の操作編~

概要

m_spriteName = "coin_" + index.ToString();

スプライト名を変更してセルアニメーションさせる処理を
Update 関数に記述したところ、
毎フレーム 66B の GC Alloc が発生して
ときどきゲームがカクつく状態になった

下記ように配列を使用する書き方に変更したところ
GC Alloc は 0B になってゲームがカクつかなくなった

private static readonly string[] SPRITE_NAME_LIST = 
{
    "coin_1", 
    "coin_2", 
    "coin_3", 
    "coin_4", 
    "coin_5", 
    "coin_6", 
    "coin_7", 
    "coin_8", 
};

...

m_spriteName = SPRITE_NAME_LIST[ index ];

関連記事