コガネブログ

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

【Unity】JsonUtility でログ出力の効率化

概要

public class Character
{
    public int Id;
    public string Name;
    public int[] SkillIdList;
}

例えばこのクラスのインスタンスが存在して、
Debug.Log で各パラメータの情報を出力する場合

Debug.Log( chara.Id );
Debug.Log( chara.Name );
foreach ( var n in chara.SkillIdList )
{
    Debug.Log( n );
}

ベタに実装するとこうなりますが、JsonUtility を使用して

public class Character
{
    public int Id;
    public string Name;
    public int[] SkillIdList;

    public override string ToString()
    {
        return JsonUtility.ToJson( this, true );
    }
}

このようにクラスに ToString 関数を実装して

Debug.Log( chara );

インスタンスを Debug.Log の引数に渡すことで

{
    "Id": 25,
    "Name": "ピカチュウ",
    "SkillIdList": [
        1,
        2,
        3,
        4
    ]
}

このようにJSON形式でログ出力されるので
現在の変数の状態を簡単に確認できるようになります