Odin – Inspector and Serializerの使い方

投稿者: | 2017年5月13日

前置き

2017/5/11に新たなアセットがリリースされました。Unityのフォーラムで話題になっており、私自身も数ヶ月前から発売を待ち望んでいた拡張アセットです。結論から言うと、Inspectorの拡張系アセットの中ではNo.1確定の代物だと思います。いきなりUnity公式にフィーチャーされていたので品質も折り紙つきだと思います。

Odin – Inspector and Serializer

どんなことができるの?

Odin – Inspector and Serializerが用意したキーワード(Attribute)をソースコードに加えるとキーワードに応じてInspectorを改造することができます。 言葉で表すのが難しいので、実際の使い方を備忘録を兼ねて下記にまとめたいと思います。

使い方

  • コード内に [SerializeField]と書くような要領で、Odin – Inspector and Serializerが用意したキーワードを記述します。

補足

  • Odin – Inspector and Serializerのアセットが入っていない人の環境でもプログラムが動くようにしたい場合は、プリプロセッサを用います。
  • Odin – Inspector and Serializerのプロセッサの有無について
    • PlayerSettingsのScripting Define Symbolsで確認することができます。

Odin – Inspector and Serializerでできること一覧(一部抜粋)

標準機能

配列を [SerializeField]やpublicで出していた場合、↑のような表示になります。枠をドラッグ・アンド・ドロップで入れ替えることができるようになり、右の鉛筆マークをクリックすると、該当のゲームオブジェクトをポップアップで開くことができます。

補足説明を入れる(string:文字列、bool:太字にするかどうか)

[Title(“画面に配置するキャラ”, false)]

特定のメソッドを実装するボタンを入れる(実行中でない時も呼び出し可能)

メソッドの上に[Button]と記載する
(関連:ボタンが複数の場合は[ButtonGroup(“グループキーワード”)])

Inspectorのグループ化

[BoxGroup(“My box”)] /  [FoldoutGroup(“Group 1”)] /  [TabGroup(“Tab A”)]

カラーパレット

[ColorPalette]

コメント

[InfoBox(“あいうえお”)]

プレビュー機能の埋め込み

[InlineEditor(InlineEditorModes.FullEditor)]

関連:http://sirenix.net/odininspector/documentation/sirenix/odininspector/inlineeditormodes

インデント

[Indent]

enumをプルダウンからボタン式に変更する

[EnumToggleButtons]

実行中のみしか該当項目のInspector上の編集をできないようにする

[DisableInEditorMode]


※デバッグ用に値を出しておきたいが、Inspectorで値の変更をしたくはないという時に重宝しそう

標準のラベルを削除する

[HideLabel]

シーン上、Project上のアセット以外をアタッチした場合に警告がでるようにする

[AssetsOnly] /  [SceneObjectsOnly]

指定した条件のものしかアタッチできないようにする

[AssetList(Tags = “MyTagA, MyTagB”)]
※AutoPopulate = trueを付けると、自動的に条件のものをアタッチしてくれる(取り外し不可)
※いくつ入るかは未知数であるため、Listと一緒に使うようにする

Inspectorから入力できる数値の値に制限をつける

[MinValue(0)] /  [MaxValue(100)] /  [Wrap(0f, 100f)]
※数字の部分を調整して下限、上限を設定する

ラベルを変更することができる

[LabelText(“あいうえお”)]

string型の値を複数行で入力する

[MultiLineProperty(10)]
※Unity標準の[Multiline(10)]と機能は似ているが、こちらの場合は[ShowInInspector]と併用することでプロパティにも付けることができる

アタッチされていない場合に警告を表示する

[Required]

privateのものをInspectorに表示する

[ShowInInspector]
※[SerializeField]との大きな違いは、プロパティであっても表示できる

おまけ(Unity標準のAttribute)

特定のコンポーネントを必須にする

[RequireComponent(typeof(Button))]

特定のヘッダーを付ける(当該アセットのTitleとほぼ同じ)

[Header]

特定の範囲内の入力しかできなくする

[Range(0, 5)]
※当該アセットのWrapとの違いは、こちらはスレイダーが同時に付いてくる

コメントを残す

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