【Unity】Inspector拡張でデバッグ効率アップ!開発スピードが変わる実用テクニック

Unity

Unityでゲーム開発をしていると、「ちょっとしたデバッグが面倒」「変数の中身をすぐ確認したい」と感じることはありませんか?

そんな時に便利なのが、Inspectorのカスタム表示(Inspector拡張)です。

特別なツールを入れなくても、Unity標準のAPIだけで、「変数の状態をわかりやすく表示する」「ボタンを押して関数を実行する」といった便利なデバッグ環境を作ることができます。

この記事では、最も基本的なカスタムInspectorの書き方と、すぐに役立つ応用例をご紹介します。

なぜInspector拡張が便利なのか?

Unityの開発では、「コンソールにDebug.Logを打ちまくる」スタイルに陥りがちですが、それだと次のような問題が出てきます。

  • 実行中のデータが見えづらい
  • ボタン操作で即時実行できない
  • Debug.Logを仕込むだけのコンパイル地獄に陥る

こうした悩みは、Inspectorを拡張して、Unityエディター内に“デバッグツール”を作る感覚で解決できます。「この値を編集したら即反映」「このボタンを押すと処理が走る」といった機能を、自作クラスの横に追加できるわけです。

例えばRPGを製作しているとき、Inspectorに「レベルアップボタン」があったら便利じゃないですか。つまりは、そういうことです。

実装例:ボタンを押して関数を実行できるInspector

まずはよくある「ボタンを押すと関数が呼ばれる」Inspectorを作ってみましょう。

スクリプト①:DebugExample.cs

まずは、本体スクリプトを作成します。今回は DebugExample.cs という名前にしました。

using UnityEngine;

public class DebugExample : MonoBehaviour
{
    public int counter = 0;

    public void AddCounter()
    {
        counter++;
        Debug.Log("Counter is now: " + counter);
    }
}

このスクリプトを、シーン内の適当なGameObjectにアタッチしておきます。
これで本体の準備は完了。

このクラスに、Inspectorから AddCounter() を実行するボタンを追加していきます。

スクリプト②:DebugExampleEditor.cs(Editor拡張クラス)

次にEditor拡張クラスを作ります。
Editor拡張クラスはEditorフォルダ内に配置する必要がありますので、Assetsフォルダ直下に「Editor」フォルダが無い場合は、Editorフォルダを作成して下さい。

Editorフォルダ内に DebugExampleEditor.cs を作ります。

using UnityEditor;
using UnityEngine;

[CustomEditor(typeof(DebugExample))]
public class DebugExampleEditor : Editor
{
    public override void OnInspectorGUI()
    {
        // 元のInspectorを表示
        DrawDefaultInspector();

        // 対象スクリプトを取得
        DebugExample script = (DebugExample)target;

        // ボタンを追加
        if (GUILayout.Button("カウントを増やす"))
        {
            script.AddCounter();
        }
    }
}

クラス名の右側が MonoBehaviour ではなく、Editor になっている事に注目。これで CustomEditor クラスが作成できます。

動作確認

DebugExample スクリプトをアタッチしたGameObjectをクリックすると、そのGameObjectのInspectorに「カウントを増やす」ボタンが表示されるようになります。
押すたびに数字がカウントアップしていきます。

Play中にこのボタンを押すだけで、コードをいじらずに関数を実行できるので、非常に快適です。

よくある使いどころ

  • パラメータの変更・比較検証:実行中にInspectorで値を変えながら効果を確認
  • 関数の手動実行:クールタイムリセットや強制終了処理など
  • 開発中のテスト操作:敵を生成、ステージをスキップ、プレイヤーを無敵に…など

特にボタンによる関数実行は、UIやゲームロジックを試す時に非常に便利で、開発スピードが一段階上がる感覚があります。
確かにスクリプトを組む手間はありますが、それ以上の恩恵は必ずあります。

注意点と補足

  • Editor スクリプトは Editor フォルダ内に入れてください(そうしないとビルドに含まれてエラーになります)
  • あくまで 開発用/デバッグ用のツール なので、実際のゲームプレイ中に使う設計にはしないこと
  • OnInspectorGUI() で直接値を変更しても Undo が効かないケースがあります。必要に応じて Undo.RecordObject() を使いましょう

まとめ:Inspector拡張は“作ってよかった”機能の代表格

一度仕組みを理解すれば、複雑なツールを使わなくてもUnityのエディターが一気に便利になります。
状況ごとの表示切り替えなども簡単に追加できるので、手軽で強力な開発効率化テクニックです。
今までCanvasにデバッグボタンを配置していた人は今すぐ実践しましょう。

今日紹介したような基礎から始めて、
あなたのプロジェクトにも“ちょっと賢いエディター”を加えてみてはいかがでしょうか?

Unity/C# をもっと体系的に学ぶには?
【現役メンターに質問しながら短期集中】
👉️ Unityコースで学んでみる
タイトルとURLをコピーしました