お知らせ

次の項目は別ページに分割しました。

関連ページ:

インスペクターの一般的な使い方は次のページにまとめています。

カスタムエディター

公式サイト:

カスタムエディター | Unity マニュアル [公式]

導入

参考:

カスタムエディタを使ってインスペクタをリッチにする – Qiita

Inspector を拡張する – Qiita

インスペクタをカスタマイズする | かめくめ

Isnpector が変わる! | マルペケつくろーどっとコム

はじめてでも簡単インスペクターのエディタ拡張の手順 | はなちるのマイノート

エディタ拡張でエディタを自由にカスタマイズしよう!インスペクタビュー編 | XR-Hub

基本

using UnityEditor;

[CustomEditor(typeof(Example))]
public class ExampleEditor : Editor
{
    SerializedProperty prop;

    void OnEnable()
    {
        prop = serializedObject.FindProperty("prop");
    }

    public override void OnInspectorGUI()
    {
        serializedObject.Update();
        EditorGUILayout.PropertyField(prop);
        serializedObject.ApplyModifiedProperties();
    }
}Code language: C# (cs)

ドキュメント:

カスタムエディター | Unity マニュアル [公式]

CustomEditor | Unity スクリプトリファレンス [公式]

CustomEditor.CustomEditor | Unity スクリプトリファレンス [公式]

UnityEditor.Editor | Unity スクリプトリファレンス [公式]

UnityEditor.Editor | Unity 2018.4 スクリプトリファレンス [公式]

参考:

Custom Inspector for Scriptable Object not working – Stack Overflow

プロパティ

ドキュメント:

プロパティの編集 | Unity マニュアル [公式]

参考:

インスペクタで設定出来る値を見てみる | かめくめ

ボタン

カスタムエディタースクリプトは、Editor フォルダの下に配置する。

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(ExampleClass))]
public class ExampleClassEditor : Editor
{
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        if (GUILayout.Button("Do Something"))
        {
            DoSomething();
        }
    }

    private void DoSomething()
    {
        Debug.Log("Hello, Do Something!")
    }
}Code language: C# (cs)

参考:

メソッドを実行するボタンを追加する | kan のメモ帳

スライダー (Slider)

ドキュメント:

EditorGUILayout.Slider | Unity スクリプトリファレンス [公式]

参考:

Inspector に float 型のスライダーを表示する | コガネブログ

slider bar in inspector – Unity Answers

トグル (Toggle)

ドキュメント:

EditorGUILayout.Toggle | Unity スクリプトリファレンス [公式]

EditorGUILayout.ToggleLeft | Unity スクリプトリファレンス [公式]

ドロップダウンリスト

ドキュメント:

EditorGUILayout.EnumPopup | Unity スクリプトリファレンス [公式]

EditorGUILayout.DropdownButton | Unity スクリプトリファレンス [公式]

参考:

How to create a drop down menu in editor inspector – Unity Answers

配列/リスト

参考:

配列やリストの表示を改良する | LIGHT11

リスト型の複数情報の表示を色々と改造するエディター拡張 | SAT-BOX BLOG

多次元のリストを表示する | kan のメモ帳

Custom List | Catlike Coding

custom inspector which allows selected child objects – Stack Overflow

リストで並べ替えを実装する (Reorderable List)

こちらのページを参照

参考:

Reorderable List – デフォルトで配列と List を並び替え可能にするエディタ拡張 – Qiita

エディタ拡張で入力要素が可変式の Reorderable List を作る | ゴマちゃんフロンティア

Reorderable List の GUI を作り変える | うにてぃブログ

Creating Reorderable Lists in Inspector | Terresquall Blog

Make Your Lists Functional with Reorderable List | Valentin Simonov

Draw properties as Reorderable List – Unity Answers

Reorderable List of Events – Unity Answers

How to properly implement ReorderableList expanding / collapsing in Custom Property Drawer? – Unity Answers

Reorderable List UI overlaps with itself – Unity Issue Tracker

オブジェクトフィールド

参考:

Object Field の作成 | 空の缶詰

カスタムインスペクター

  • CustomEditor 属性
  • Editor クラス

ドキュメント:

UnityEditor.CustomEditor | Unity スクリプトリファレンス [公式]

Property Drawer

プロパティの表示をカスタマイズする。

こちらのページを参照

参考:

自分だけの Property Drawer を作ろう! – Qiita

非 Mono Behaviour のインスペクタ表示をカスタムする | LIGHT11

Property Drawer で独自の属性をもつメンバーの外観を変える | Unity の使い方

カスタムアトリビュート

参考:

インスペクターにボタンを表示するカスタムアトリビュートを作ってみた | dobu

シリアライズドオブジェクト

こちらのページを参照

ドキュメント:

UnityEditor.SerializedObject | Unity スクリプトリファレンス [公式]

参考:

Seriazlied Object に迫る – Qiita

serializedObject の中にある serializedObject の値を参照したい – teratail

Creating Editor for Serialized Property – Unity Forum

Custom Inspector for Scriptable Object not working – Stack Overflow

Problem with SerializedProperty. FindPropertyRelative returning null – Stack Overflow

ドロップダウンリストを作成する

参考:

How to make an enum-like Unity inspector drop-down menu from a string array with C#? – Stack Overflow

ヘッダー属性 (Header)

ドキュメント:

UnityEngine.HeaderAttribute | Unity スクリプトリファレンス [公式]

参考:

Inspector をきれいに – Qiita

Header と Space を使って Inspector を整理する | テラシュールブログ

Header Attribute を使ってフィールドを整理してみなイカ? | エクスプラボ

Headers does not show up if there is no public variable after it | Unity Issue Tracker [Official]

Header attributes in incorrect order – Unity Forum

Header don’t show up in the Unity inspector – Unity Answers

OnInspectorGUI

ドキュメント:

Editor.OnInspectorGUI | Unity スクリプトリファレンス [公式]

参考:

Gizmos only update when I hover over the scene or game view – Stack Overflow

OnValidate

  • インスペクターでプロパティに変更が加えられる度に呼び出される。
  • エディター内でのみ呼び出される。(ビルド時には呼び出されない。)

ドキュメント:

MonoBehaviour.OnValidate() | Unity スクリプトリファレンス [公式]

参考:

インスペクターから値を変更したときにコールバック処理を実行する簡単な方法 – Qiita

Callback on variable change inside editor – Unity Discussions

OnValueChanged

ドキュメント:

OnValueChangedAttribute | Odin Inspector for Unity [Official]

スクリプト

参考:

スクリプトの参照を Inspector に表示する | うにてぃブログ

CustomEditor 属性

ドキュメント:

UnityEditor.CustomEditor | Unity スクリプトリファレンス [公式]

Editor クラス

参考:

UnityEditor.Editor | Unity スクリプトリファレンス [公式]

カスタムマテリアルエディター (Material Editor)

こちらのページを参照

ドキュメント:

UnityEditor.MaterialEditor | Unity スクリプトリファレンス [公式]

参考:

マテリアルの Inspector 表示を拡張するエディタ拡張 | テラシュールブログ

Custom Material Editors のサンプルを作ってみた | 強火で進め

更新を検出する

ドキュメント:

UnityEditor.ChangeCheckScope | Unity スクリプトリファレンス [公式]

GUI.changed | Unity スクリプトリファレンス [公式]

参考:

カスタムエディタを使って Serialize Field の値が変更されたことを検知する方法 | クレイ

Inspector で要素が変更されたかどうかを確認する | コガネブログ

Custom Editor not saving changes – Unity Forum

Save changes made in Custom Editor – Unity Forum

How to refresh custom inspector when variable changed? – Unity Forum

How to update a Serialized Property programmatically? – Stack Overflow

On Custom Editor Update event – Game Development Stack Exchange

ビューを更新する

ドキュメント:

EditorApplication.QueuePlayerLoopUpdate | Unity スクリプトリファレンス [公式]

参考:

Unity Editor の Game View が更新されない時の対処方法 | 太郎Work

Editor 拡張をしたが描画が更新されない時 | Blue_Breath_Blog

How to force update in edit mode – Unity Forum

Edit mode, constant rendering update? – Unity Forum

How to manually update GameView? – Unity Answers

How to manually refresh Inspector from Editor code? – Unity Answers

data refresh – Stack Overflow

再描画

参考:

Inspector 表示を強制的に再描画する方法 | My note

How do you force a Custom Inspector to redraw? – Unity Answers

showMixedValue

ドキュメント:

EditorGUI.showMixedValue | Unity スクリプトリファレンス [公式]

参考:

違う値を持つプロパティの Inspector を複数選択表示した際の挙動を実装する | LIGHT11

MonoBehaviour

参考:

EditorGUI 環境で MonoBehaviour のインスペクタを描画する | LIGHT11

Update

ドキュメント:

EditorApplication.update | Unity スクリプトリファレンス [公式]

参考:

エディットモード中に実行せずに一定時間おきに更新処理を行う方法 – Qiita

Update alternative? – Unity Answers

レイアウトが乱れる

参考:

Editor の OnInspectorGUI の呼び出しでハマったこと | うにてぃブログ

属性 (Attribute)

こちらのページを参照

ドキュメント:

属性 | Unity マニュアル [公式]

参考:

Untiy 開発で早く知りたかった Attribute – Qiita

インスペクター拡張用の属性について | Uinty 使い方ガイド

Inspector ウィンドウでの表示に関わる Attribute のまとめ | エクスプラボ

Attribute で Inspector の表示変更 | 操作を忘れてしまうので。

7 Useful Unity Attributes that Make the Inspector Easier to Use (Elnur) | Star Gazers

複数オブジェクトを同時に編集する

複数オブジェクトを選択した際に、それらのコンポーネントを同時に編集できるようにするには、カスタムエディターに CanEditMultipleObjects 属性を付与する。

ドキュメント:

UnityEditor.CanEditMultipleObjects | Unity スクリプトリファレンス [公式]

参考:

multi-object editing – Unity Forum

multi-object editing of classes that don’t derive from UnityEngine.Object – Unity Forum

Can’t edit multiple objects – Stack Overflow

再生モードで追加のデバッグ用 UI を表示する

ドキュメント:

EditorApplication.isPlaying | Unity スクリプトリファレンス [公式]

参考:

Serialized Property を使って Editor 拡張でクラスのプロパティの表示をカスタマイズする | MR が楽しい

継承/基底クラス/派生クラス

派生クラスに同じカスタムエディターを適用するには、属性の第二引数に true を渡す。

[CustomEditor(typeof(Example), true)]
public class ExampleEditor : Editor
{
    // ...
}Code language: C# (cs)

参考:

継承先のクラスでも Custom Editor を適応する | うにてぃブログ

Using custom editor for an inherited class – Unity Forum

Do Custom Inspectors support inheritance? – Unity Answers

Can a class’s Editor call its component’s Editor? Likewise, can a derived class’s Editor call its base class’s Editor? – Unity Answers

Custom Editor Inheritance – Stack Overflow

How to see the fields of the children class if i make visible in inspector the father class? – Stack Overflow

Custom Editor for inherited Event property – Stack Overflow

Serialize List with Scriptable Object with inheritance in Custom Editor – Stack Overflow

メソッド呼び出し

参考:

Call a function in a Custom Editor script from another script – Stack Overflow

Null Reference Exception エラー

参考:

call component’s method – Unity Answers

Why does my list reset to null OnEnable? – Stack Overflow

まとめ

Inspector をきれいに – Qiita

Inspector を拡張するサンプル Script 集 | Blue_Breath_Blog

インスペクター拡張の基礎 | Unity でコードから GUI を作る (kumaS)

Custom Editors of Parameters Panels | Pav Creations

チュートリアル

How to Make a Custom Inspector (Brackeys)

Custom Inspectors in 100 Seconds (Kemble Software)

Only Serialize If True – Lists and Multiple per Line (Kap Koder)

Custom Inspector #1 (Amrit Choudhary)

Custom Inspector #2 (Amrit Choudhary)

Custom Inspector #3 (Amrit Choudhary)

Custom Inspector #4 (Amrit Choudhary)

Adding Button (Unity3D School)

Create Inspector Buttons (Bardent)

Custom Editors (prime 31)

Min Max Slider

コード:

Min Max Slider (frarees) – GitHub Gist

参考:

Min Max Slider の実装 | Programming Serendipity

What is the best way to create custom inspectors? – Unity Answers

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA