Odinでオプションが有効(or 無効)の時だけメニューを表示する

Unity の Editor 拡張が簡単にできる有料アセット「Odin Inspector and Serializer」で、ある bool 型の変数値が true(or false) の時だけインスペクターに表示されるメニューの作成方法です。

以下のスクリプトをオブジェクトにアタッチします。

using Sirenix.OdinInspector;

// サンプル用のクラス
public class OdinSample : MonoBehaviour
{
    // オプションスイッチ
    [SerializeField] bool _optionSwicth;

    // オプションスイッチがtrueの時だけ表示されるメニュー
    [SerializeField, ShowIf(nameof(_optionSwicth))] int _optionTrueValue = 9999;

    // オプションスイッチがfalseの時だけ表示されるメニュー
    [SerializeField, HideIf(nameof(_optionSwicth))] int _optionFalseValue = -256;
属性 説明
ShowIf("boolの変数名"); bool が true の時に表示される
HideIf("boolの変数名"); bool が false の時に表示される

HidIf は true の時に隠している動作が結果的に false だと表示になっています。

自動的に以下の表示になります。

チェックがOFFの時

チェックがONの時

メニューが非表示になるだけでスクリプト側からは変数値が制限なく参照できます。メニューで非表示の時は値を参照しないような仕組みは自分で作成する必要があります。