次の項目は別ページに分割しました。
関連ページ:
インスペクターの一般的な使い方は次のページにまとめています。
カスタムエディター
公式サイト:
導入
参考:
カスタムエディタを使ってインスペクタをリッチにする – 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)
ドキュメント:
CustomEditor | Unity スクリプトリファレンス [公式]
CustomEditor.CustomEditor | Unity スクリプトリファレンス [公式]
UnityEditor.Editor | Unity スクリプトリファレンス [公式]
UnityEditor.Editor | Unity 2018.4 スクリプトリファレンス [公式]
参考:
Custom Inspector for Scriptable Object not working – Stack Overflow
プロパティ
ドキュメント:
参考:
ボタン
カスタムエディタースクリプトは、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)
参考:
スライダー (Slider)
ドキュメント:
EditorGUILayout.Slider | Unity スクリプトリファレンス [公式]
参考:
Inspector に float 型のスライダーを表示する | コガネブログ
slider bar in inspector – Unity Answers
トグル (Toggle)
ドキュメント:
EditorGUILayout.Toggle | Unity スクリプトリファレンス [公式]
EditorGUILayout.ToggleLeft | Unity スクリプトリファレンス [公式]
ドロップダウンリスト
EditorGUILayout.EnumPopup
EditorGUILayout.DropdownButton
- Dropdown Attribute
ドキュメント:
EditorGUILayout.EnumPopup | Unity スクリプトリファレンス [公式]
EditorGUILayout.DropdownButton | Unity スクリプトリファレンス [公式]
参考:
How to create a drop down menu in editor inspector – Unity Answers
配列/リスト
参考:
リスト型の複数情報の表示を色々と改造するエディター拡張 | SAT-BOX BLOG
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
Reorderable List UI overlaps with itself – Unity Issue Tracker
オブジェクトフィールド
参考:
カスタムインスペクター
CustomEditor
属性Editor
クラス
ドキュメント:
UnityEditor.CustomEditor | Unity スクリプトリファレンス [公式]
Property Drawer
プロパティの表示をカスタマイズする。
参考:
自分だけの Property Drawer を作ろう! – Qiita
非 Mono Behaviour のインスペクタ表示をカスタムする | LIGHT11
Property Drawer で独自の属性をもつメンバーの外観を変える | Unity の使い方
カスタムアトリビュート
参考:
インスペクターにボタンを表示するカスタムアトリビュートを作ってみた | dobu
シリアライズドオブジェクト
ドキュメント:
UnityEditor.SerializedObject | Unity スクリプトリファレンス [公式]
参考:
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
ドロップダウンリストを作成する
参考:
ヘッダー属性 (Header)
ドキュメント:
UnityEngine.HeaderAttribute | Unity スクリプトリファレンス [公式]
参考:
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
再描画
参考:
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)
ドキュメント:
参考:
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
Custom Editor Inheritance – 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 を拡張するサンプル 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)
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