備考
この投稿は自分のブログの記事の転載になります
http://baba-s.hatenablog.com/entry/odininspector
概要
2017/5/11 に、エディタ拡張用のアセット
「Odin - Inspector and Serializer」がリリースされました
これは Unity エディタの Inspector の表示や操作性を拡張するアセットです
例えば、Unity における配列やリストの表示は
デフォルトでは上記の画像のとおりですが
「Odin - Inspector and Serializer」を導入するだけで
配列やリストで項目の並べ替えや削除ができるようになります
これはあくまで一例であり、
「Odin - Inspector and Serializer」は
他にも豊富な機能をたくさん兼ね備えているので
64件の記事にわけて、Odin の機能を紹介していきます
検証環境
- Unity 5.6.2f1
- Odin - Inspector and Serializer 1.0.4.1
スタートアップ
基本機能
- 配列やリストで項目の並べ替えや削除が可能
- Dictionary を Inspector で編集可能
- Quaternion、Vector3、Bounds、Rect の視認性が向上
- 変数のコピー・ペースト、配列やリストの削除が可能
- ジェネリッククラスやインターフェイス、null 許容型の変数を Inspector で設定できるようにする「SerializedMonoBehaviour」クラス
属性
パラメータ
- private 変数やプロパティを Inspector に表示する「ShowInInspector」属性
- パラメータの内容を編集不可能な文字列で表示する「DisplayAsString」属性
- アタッチされているコンポーネントやアセットのプロパティを表示する「InlineEditor」属性
- パラメータを編集不可能にする「ReadOnly」属性
- 意図しない値が設定されたらエラーメッセージを表示する「ValidateInput」属性
- 値が変更された時に呼び出されるコールバック関数を設定できる「OnValueChanged」属性
- カラーパレットから色を指定できるようになる「ColorPalette」属性
- クラスや構造体のパラメータを折りたたみ無しで表示する「InlineProperty」属性
オブジェクト
- Project 内のアセットや、Scene 上のオブジェクトやコンポーネントのみをアタッチ可能にする「AssetsOnly」「SceneObjectsOnly」属性
- 参照が設定されていない時にエラーメッセージを表示する「Required」属性
プレハブ
- プレハブの値を非表示にする「HideInPrefabs」属性
- プレハブの値を編集不可にする「DisableInPrefabs」属性
- Hierarchy ビューのプレハブの値を非表示にする「HideInPrefabInstances」属性
- Hierarchy ビューのプレハブの値を編集不可にする「DisableInPrefabInstances」属性
- Project ビューのプレハブの値を非表示にする「HideInPrefabAssets」属性
- Project ビューのプレハブの値を編集不可にする「DisableInPrefabAssets」属性
- プレハブではないオブジェクトの値を非表示にする「HideInNonPrefabs」属性
- プレハブではないオブジェクトの値を編集不可にする「DisableInNonPrefabs」属性
- (非推奨)プレハブのインスタンスで値を閲覧不可能にする「ShowForPrefabOnly」属性
- (非推奨)プレハブのインスタンスで値を編集不可能にする「EnableForPrefabOnly」属性
数値
ボタン
グループ
- パラメータをグループ分けする「BoxGroup」属性
- パラメータをタブでグループ分けする「TabGroup」属性
- トグル付きのグループに分ける「ToggleGroup」「Toggle」属性
- パラメータを水平方向のグループに分ける「HorizontalGroup」属性
- パラメータを垂直方向のグループに分ける「VerticalGroup」属性
- パラメータを開閉可能なグループに分ける「FoldoutGroup」属性
- パラメータをタイトル付きのグループに分ける「TitleGroup」属性
非表示、無効化
- 条件を満たしているかどうかで項目を編集できるようにする「EnableIf」「DisableIf」属性
- ゲームを実行しているかどうかで項目を編集できるようにする「DisableInPlayMode」「DisableInEditorMode」属性
- 条件を満たしているかどうかで項目を表示するかを変更できる「ShowIf」「HideIf」属性
- ゲームを実行しているかどうかで項目を非表示にする「HideInPlayMode」「HideInEditorMode」属性
メッセージ
- インフォメーションを表示する「InfoBox」属性
- 詳細な説明文付きでインフォメーションを表示する「DetailedInfoBox」属性
- Inspector に見出しを表示する「Title」属性
- ラベルの文言を変更する「LabelText」属性
- ラベルを非表示にする「HideLabel」属性
- ラベルの幅を調整する「LabelWidth」属性
- 変数やプロパティにカーソルを重ねた時にヒントを表示する「PropertyTooltip」属性
GUI
- インデントを設定できる「Indent」属性
- 文字列を複数行表示できる「MultiLineProperty」属性
- 変数ごとのコンテキストメニューに項目を追加する「CustomContextMenu」属性
- 変数ごとのコンテキストメニューを無効化する「DisableContextMenu」属性
- パラメータの表示順を変更できる「PropertyOrder」属性
- 列挙型をプルダウンではなくボタンで選択できるようになる「EnumToggleButtons」属性
- ドロップダウンメニューからパラメータを設定できるようになる「ValueDropdown」属性
- bool 値のチェックボックスを変数名の左側に表示する「ToggleLeft」属性
- GUI に色を設定できる「GUIColor」属性
- GUI を拡張する「OnInspectorGUI」属性
- 配列やリストの表示を調整する「ListDrawerSettings」属性
- Dictionary の表示を調整する「DictionaryDrawerSettings」属性
最後に
ここで紹介した以外にも
「Odin - Inspector and Serializer」には機能が用意されています
ぜひ公式のドキュメントやデモも参照して頂ければと思います