【Unity】OnGUIでLabelを使いデバッグ表示する (デバッグ効率向上委員会)

この記事の情報は次のバージョンで動作確認しています。

  • MacOS Monterey (12.1)
  • Unity (2021.3.2f1)
  • Unity

    内部パラメータを画面上に表示することができればデバッグ効率が上がりますよね?

    そんな時はGUI.Labelを使いましょうという回でございます。

    ラベルを表示するには?

    ラベルを表示するには GUI.Labelを使います。

    GUI.LabelOnGUI()の中で呼び出さないといけません。

    private void OnGUI()
    {
        GUI.Label(Rect, string, GUIStyle); // GUIStyleは省略可
    }
    

    Rect

    Rectは表示する領域です。

    Rect(X座標, Y座標,  幅、 高さ)

    文字数が多くなり、を超えてしまうと自動で折り返しされます。
    ※ 折り返しも含めた高さがないと見切れます。

    見切れるのが嫌ならScreenクラスを使えばいいと思います。
    Screenなら画面サイズを取得できるので画面いっぱいの領域を簡単に作れます。

    new Rect(0, 0, Screen.width, Screen.height)
    

    string

    stringは文字列を指定します。

    StringBuilderで複数行表示

    複数行表示するやり方としてはGUI.Labelを2つ並べる方法があります。

     GUI.Label(Rect, "あいうえお"); 
     GUI.Label(Rect, "かきくけこ"); 

    上記の実装だとRectのY座標を計算しないといけないので、少し手間です。

    StringBuilderクラスを使うと簡単に複数行表示ができます。

    実装例)
    int hp = 255;
    int level = 99;
    int rank = 33;
    
    builder.AppendLine($"HP={hp}");
    builder.AppendLine($"Level={level}");
    builder.AppendLine($"Rank={rank}");
    
    GUI.Label(new Rect(10, 10, Screen.width - 20, Screen.height - 20), builder.ToString());
    

    スタイルが全部同じになるので色分けしたいなら使えません。

    ラベルのスタイルを変更

    GUIStyleクラスを使うとスタイルを変更できます。

     GUIStyle style = new GUIStyle();
    GUI.Label(new Rect(x, y, w, h), "好きな文字列", style);
    

    このstyleクラスのパラメータでスタイルの変更ができます。

    ラベルのフォントサイズを変える

    style.fontSize = 16;
    

    fontSizeは0がデフォルト値ですが、0の時はfontSize=13と同じサイズでした。

    ラベルの色を変える

    normal.textColorで色を指定することができます。

    style.normal.textColor = Color.red;