この記事でのバージョン
Unity 2021.1.16f1
Odin - Inspector and Serializer 3.0.9
はじめに
Unityでは変数をpublicにしたり、SerializeFieldという属性を付けると
Inspector上で値の確認及び変更が出来るようになりますが、
public int Value = 1; [SerializeField] private string _text = "てきすと";
今回はOdinという言わずと知れた人気アセットを使って、
Odin - Inspector and Serializer | Utilities Tools | Unity Asset Store |
これらのInspectorに表示されている変数を
条件に合わせて非表示にしたり、変更出来ないようにする方法の紹介です!
ちなみに常に非表示にしたい場合はHideInInspector(Unityの属性)を
常に変更出来ないようにするにはReadOnly(Odinの属性)を使います。
[HideInInspector]//常に非表示 public string Text = "テキスト"; [ReadOnly]//常に変更出来ないように public bool Flag = true;]
ShowIfとEnabledIf
さっそくですが、Inspectorに表示されている変数を
条件に合わせて非表示にしたい場合はShowIfという属性を使います。
なお("@true")のように@を付けた文字列で条件を指定する感じで、
@"_value == 1"のように他の変数や条件式を入れる事も可能です。
//↓のテキストをInspectorに表示するか public bool ShouldShowText = true; [ShowIf("@ShouldShowText")]//ShouldShowTextがtrueの時だけInspectorに表示 public string Text = "テキスト";
次にInspectorに表示されている変数を
条件に合わせて変更出来ないようにしたい場合はEnableIfという属性を使います。
これもShowIfと同様に@を付けた文字列で条件を指定する感じです。
//↓のフラグをInspectorで有効にするための条件値 public float TermsValue = 1f; [EnableIf("@TermsValue >= 0.5f")]//TermsValueが0.5以上の時だけInspectorで変更出来るように public bool Flag = true;