カスタムエディター
公式サイト:
カスタムエディター | Unity 2018.4 マニュアル [公式]
目次
- 1 導入
- 2 基本
- 3 プロパティ
- 4 ボタン
- 5 スライダー (Slider)
- 6 リスト
- 7 CustomEditor 属性
- 8 Property Drawer
- 9 カスタムアトリビュート
- 10 シリアライズドオブジェクト
- 11 ボタンを付ける
- 12 ドロップダウンリストを作成する
- 13 ヘッダー属性 (Header)
- 14 OnInspectorGUI
- 15 OnValidate
- 16 OnValueChanged
- 17 CustomEditor
- 18 Editor クラス
- 19 MaterialEditor
- 20 ビューを更新する
- 21 showMixedValue
- 22 MonoBehaviour
- 23 レイアウトが乱れる
- 24 属性 (Attribute)
- 25 まとめ
- 26 Min Max Slider
導入
参考:
カスタムエディタを使ってインスペクタをリッチにする – Qiita
Unity の Inspector を拡張する – Qiita
Unity の Editor 拡張をしてインスペクタをカスタマイズする | かめくめ
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 2018.4 マニュアル [公式]
UnityEditor.Editor | Unity スクリプトリファレンス [公式]
UnityEditor.Editor | Unity 2018.4 スクリプトリファレンス [公式]
プロパティ
参考:
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)
参考:
Inspector にメソッドを実行するボタンを追加する | kan のメモ帳
スライダー (Slider)
参考:
Inspector に float 型のスライダーを表示する | コガネブログ
EditorGUILayout.Slider | Unity スクリプトリファレンス [公式]
slider bar in inspector – Unity Answers
リスト
参考:
配列やリストの Inspector 表示を改良する | LIGHT11
Inspector のリスト型の複数情報の表示を色々と改造するエディター拡張 | SAT-BOX BLOG
多次元の List を Inspector に表示する | kan のメモ帳
CustomEditor 属性
参考:
UnityEditor.CustomEditor | Unity スクリプトリファレンス [公式]
Property Drawer
参考:
自分だけの Property Drawer を作ろう! – Qiita
非 Mono Behaviour のインスペクタ表示をカスタムする | LIGHT11
Property Drawerで独自の属性をもつメンバーの外観を変える | Unity の使い方
カスタムアトリビュート
参考:
インスペクターにボタンを表示するカスタムアトリビュートを作ってみた | dobu
シリアライズドオブジェクト
参考:
UnityEditor.SerializedObject | Unity スクリプトリファレンス [公式]
ボタンを付ける
参考:
Inspector にメソッドを実行するボタンを追加する | kan のメモ帳
ドロップダウンリストを作成する
参考:
ヘッダー属性 (Header)
参考:
Header と Space を使って Inspector を整理する | テラシュールブログ
Header Attribute を使ってフィールドを整理してみなイカ? | エクスプラボ
UnityEngine.HeaderAttribute | Unity スクリプトリファレンス [公式]
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 スクリプトリファレンス [公式]
OnValidate
参考:
Inspector から値を変更したときにコールバック処理を実行する簡単な方法 – Qiita
MonoBehaviour.OnValidate() | Unity スクリプトリファレンス [公式]
Callback on variable change inside editor – Unity Answers
OnValueChanged
参考:
OnValueChangedAttribute | Odin Inspector for Unity [Official]
CustomEditor
参考:
UnityEditor.CustomEditor | Unity スクリプトリファレンス [公式]
Editor クラス
参考:
UnityEditor.Editor | Unity スクリプトリファレンス [公式]
MaterialEditor
参考:
マテリアルの Inspector 表示を拡張するエディタ拡張 | テラシュールブログ
Custom Material Editors のサンプルを作ってみた | 強火で進め
UnityEditor.MaterialEditor | Unity スクリプトリファレンス [公式]
ビューを更新する
参考:
Unity Editor の Game View が更新されない時の対処方法 | 太郎Work
Editor 拡張をしたが描画が更新されない時 | Blue_Breath_Blog
EditorApplication.QueuePlayerLoopUpdate | Unity スクリプトリファレンス [公式]
How to force update in edit mode – Unity Forum
Edit mode, constant rendering update? – Unity Forum
How to manually update GameView? – Unity Answers
showMixedValue
参考:
違う値を持つプロパティの Inspector を複数選択表示した際の挙動を実装する | LIGHT11
EditorGUI.showMixedValue | Unity スクリプトリファレンス [公式]
MonoBehaviour
参考:
EditorGUI 環境で MonoBehaviour のインスペクタを描画する | LIGHT11
レイアウトが乱れる
参考:
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
まとめ
参考:
Inspector を拡張するサンプル Script 集 | Blue_Breath_Blog
インスペクター拡張の基礎 | Unity でコードから GUI を作る (kumaS)
Min Max Slider
コード:
MinMaxSlider (frarees) – GitHub Gist
参考:
Min Max Slider の実装 | Programming Serendipity
What is the best way to create custom inspectors? – Unity Answers