コガネブログ

平日更新を目標にUnityやC#、Visual Studioなどのゲーム開発アレコレを書いていきます

【Unity】Inspector をカスタマイズするエディタ拡張用アセット「Odin - Inspector and Serializer」を64件の記事に分けて紹介

はじめに

この記事は「Unity アセット真夏のアドベントカレンダー 2017」の8/5の記事です
昨日は ぽうひろ さんの「DoozyUIでUnityUIを時短de簡単に作っちゃおう!!」でした
明日は ゆーじ さんの「DaydreamのコントローラーをHoloLensで使う」です

概要

2017/5/11 に、エディタ拡張用のアセット
「Odin - Inspector and Serializer」がリリースされました

これは Unity エディタの Inspector の表示や操作性を拡張するアセットです

f:id:baba_s:20170719155257p:plain

例えば、Unity における配列やリストの表示は
デフォルトでは上記の画像のとおりですが

f:id:baba_s:20170719154208p:plain

「Odin - Inspector and Serializer」を導入するだけで
配列やリストで項目の並べ替えや削除ができるようになります

これはあくまで一例であり、
「Odin - Inspector and Serializer」は
他にも豊富な機能をたくさん兼ね備えているので
64件の記事にわけて、Odin の機能を紹介していきます

検証環境

  • Unity 5.6.2f1
  • Odin - Inspector and Serializer 1.0.4.1

スタートアップ

  1. 入門
  2. Attribute を使用したデザイン
  3. シリアライズする

基本機能

  1. 配列やリストで項目の並べ替えや削除が可能
  2. Dictionary を Inspector で編集可能
  3. Quaternion、Vector3、Bounds、Rect の視認性が向上
  4. 変数のコピー・ペースト、配列やリストの削除が可能
  5. ジェネリッククラスやインターフェイス、null 許容型の変数を Inspector で設定できるようにする「SerializedMonoBehaviour」クラス

属性

パラメータ

  1. private 変数やプロパティを Inspector に表示する「ShowInInspector」属性
  2. パラメータの内容を編集不可能な文字列で表示する「DisplayAsString」属性
  3. アタッチされているコンポーネントやアセットのプロパティを表示する「InlineEditor」属性
  4. パラメータを編集不可能にする「ReadOnly」属性
  5. 意図しない値が設定されたらエラーメッセージを表示する「ValidateInput」属性
  6. 値が変更された時に呼び出されるコールバック関数を設定できる「OnValueChanged」属性
  7. カラーパレットから色を指定できるようになる「ColorPalette」属性
  8. クラスや構造体のパラメータを折りたたみ無しで表示する「InlineProperty」属性

オブジェクト

  1. Project 内のアセットや、Scene 上のオブジェクトやコンポーネントのみをアタッチ可能にする「AssetsOnly」「SceneObjectsOnly」属性
  2. 参照が設定されていない時にエラーメッセージを表示する「Required」属性

プレハブ

  1. プレハブの値を非表示にする「HideInPrefabs」属性
  2. プレハブの値を編集不可にする「DisableInPrefabs」属性
  3. Hierarchy ビューのプレハブの値を非表示にする「HideInPrefabInstances」属性
  4. Hierarchy ビューのプレハブの値を編集不可にする「DisableInPrefabInstances」属性
  5. Project ビューのプレハブの値を非表示にする「HideInPrefabAssets」属性
  6. Project ビューのプレハブの値を編集不可にする「DisableInPrefabAssets」属性
  7. プレハブではないオブジェクトの値を非表示にする「HideInNonPrefabs」属性
  8. プレハブではないオブジェクトの値を編集不可にする「DisableInNonPrefabs」属性
  9. (非推奨)プレハブのインスタンスで値を閲覧不可能にする「ShowForPrefabOnly」属性
  10. (非推奨)プレハブのインスタンスで値を編集不可能にする「EnableForPrefabOnly」属性

数値

  1. 最小値と最大値の範囲を設定できる「MinMaxSlider」属性
  2. 設定できる値を制限できる「MinValue」「MaxValue」属性
  3. 設定された値をラップアラウンドする「Wrap」属性

ボタン

  1. Inspector にボタンを表示する「Button」属性
  2. パラメータの横にボタンを表示する「InlineButton」属性
  3. ボタンをグループ化して表示する「ButtonGroup」属性

グループ

  1. パラメータをグループ分けする「BoxGroup」属性
  2. パラメータをタブでグループ分けする「TabGroup」属性
  3. トグル付きのグループに分ける「ToggleGroup」「Toggle」属性
  4. パラメータを水平方向のグループに分ける「HorizontalGroup」属性
  5. パラメータを垂直方向のグループに分ける「VerticalGroup」属性
  6. パラメータを開閉可能なグループに分ける「FoldoutGroup」属性
  7. パラメータをタイトル付きのグループに分ける「TitleGroup」属性

非表示、無効化

  1. 条件を満たしているかどうかで項目を編集できるようにする「EnableIf」「DisableIf」属性
  2. ゲームを実行しているかどうかで項目を編集できるようにする「DisableInPlayMode」「DisableInEditorMode」属性
  3. 条件を満たしているかどうかで項目を表示するかを変更できる「ShowIf」「HideIf」属性
  4. ゲームを実行しているかどうかで項目を非表示にする「HideInPlayMode」「HideInEditorMode」属性

メッセージ

  1. インフォメーションを表示する「InfoBox」属性
  2. 詳細な説明文付きでインフォメーションを表示する「DetailedInfoBox」属性
  3. Inspector に見出しを表示する「Title」属性
  4. ラベルの文言を変更する「LabelText」属性
  5. ラベルを非表示にする「HideLabel」属性
  6. ラベルの幅を調整する「LabelWidth」属性
  7. 変数やプロパティにカーソルを重ねた時にヒントを表示する「PropertyTooltip」属性

GUI

  1. インデントを設定できる「Indent」属性
  2. 文字列を複数行表示できる「MultiLineProperty」属性
  3. 変数ごとのコンテキストメニューに項目を追加する「CustomContextMenu」属性
  4. 変数ごとのコンテキストメニューを無効化する「DisableContextMenu」属性
  5. パラメータの表示順を変更できる「PropertyOrder」属性
  6. 列挙型をプルダウンではなくボタンで選択できるようになる「EnumToggleButtons」属性
  7. ドロップダウンメニューからパラメータを設定できるようになる「ValueDropdown」属性
  8. bool 値のチェックボックスを変数名の左側に表示する「ToggleLeft」属性
  9. GUI に色を設定できる「GUIColor」属性
  10. GUI を拡張する「OnInspectorGUI」属性
  11. 配列やリストの表示を調整する「ListDrawerSettings」属性
  12. Dictionary の表示を調整する「DictionaryDrawerSettings」属性

最後に

ここで紹介した以外にも
「Odin - Inspector and Serializer」には機能が用意されています
ぜひ公式のドキュメントやデモも参照して頂ければと思います