【Unity】デバッグのためにシーン上のオブジェクトに情報を表示

2023年10月24日

ゲームオブジェクトにデバッグに有効な情報を表示することができます
この機能はエディターで動作するため、ビルド時は表示されません
Sceneビューには表示されますが、Gameビューには表示されません

実行結果

MobStatusスクリプトにライフ情報(Life)が登録されている条件のサンプルになります

サンプルのコードはオブジェクト名だけ表示するものになります
キャラクタの移動に伴って、情報も移動します

コード

このコードを必要なオブジェクトにアタッチします
再生中でなくても動作します
例えば、シーンウィンドウでオブジェクトを移動しても表示はついてきます

using UnityEngine;

// Unityエディタ時のみusingする必要がある
#if UNITY_EDITOR
using UnityEditor;
#endif

public class DebugMobStatus : MonoBehaviour
{
    // Unityエディタ時のみGizmo表示を行う
#if UNITY_EDITOR

void OnDrawGizmos()
    {
        // 表示色を指定
        GUI.color = Color.black;

        // オブジェクトの位置に「オブジェクト名」をラベル表示
        Handles.Label(transform.position, $"{name}");
    }
#endif
}

このコードは、Unityゲームエンジンで使用されるスクリプトであり、オブジェクトの位置に名前を表示するためにGizmoを使用しています。

まず、Unityの名前空間からUnityEngineを使用します。次に、Unityエディタでのみ必要なUnityEditorを条件付きで使用します。つまり、Unityエディタでのみ実行されるコードブロックを定義することができます。

DebugMobStatusクラスはMonoBehaviourクラスを継承しており、Gizmoを描画するためにOnDrawGizmosメソッドを定義しています。このメソッドは、Unityエディタでシーンビューに表示されたオブジェクトに対して、特定の表示を行うことができます。

OnDrawGizmosメソッドでは、まず、GUI.colorを使用して表示色を指定し、その後、Handles.Labelを使用してオブジェクトの位置にオブジェクト名を表示するためにGizmoを使用します。#if UNITY_EDITORで囲まれた部分は、Unityエディタでのみコンパイルされます。

参考

C#,Unity,小技

Posted by hidepon