コガネブログ

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

【Unity】【Odin - Inspector and Serializer】意図しない値が設定されたらエラーメッセージを表示する「ValidateInput」属性

目次

「ValidateInput」属性

「ValidateInput」属性を使用すると
意図しない値が設定された時にエラーメッセージを表示できるようになります

f:id:baba_s:20170720153031p:plain

using Sirenix.OdinInspector;
using UnityEngine;

public class Example : MonoBehaviour
{
    [ValidateInput( "HasRidgebody" )] public GameObject go1;
    [ValidateInput( "HasRidgebody", "Ridgebody がアタッチされていません" )] public GameObject go2;

    private bool HasRidgebody( GameObject gameObject )
    {
        if ( gameObject == null ) return true;
        return gameObject.GetComponent<Rigidbody>() != null;
    }

    [ValidateInput( "IsPositive" )] public int i;
    
    private bool IsPositive( int i )
    {
        return 0 <= i;
    }
}

使い方

値が意図したものかどうかを bool 値で返す関数を定義した上で
ValidateInput 属性の引数にその関数の名前を文字列で指定します

[ValidateInput( "HasRidgebody" )] public GameObject go1;

private bool HasRidgebody( GameObject gameObject )
{
    if ( gameObject == null ) return true;
    return gameObject.GetComponent<Rigidbody>() != null;
}

第2引数でエラーメッセージを設定することもできます

[ValidateInput( "HasRidgebody", "Ridgebody がアタッチされていません" )] public GameObject go2;

参考サイト様

Odin Inspector and Serializer | Improve your workflow in Unity