コガネブログ

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

【Unity】Inspectorで入力できる値を制限する「OnValidate関数」

例えばキャラクターのレベルをInspectorで設定できるようにするために
下記のようなスクリプトを作成したとすると

public class Character : MonoBehaviour
{
    public int Level;
}

レベルの上限が100だったとしてもそれ以上の値を設定できたり
マイナスの値を設定できたりしてしまいます

こうした問題を防ぎたい場合はOnValidate関数を使用します

public class Character : MonoBehaviour
{
    public int Level;

    private void OnValidate()
    {
        // Levelは1から100まで
        Level = Mathf.Clamp(Level, 1, 100);
    }
}

OnValidate関数はInspectorで値を設定するたびに呼び出されるので
値を制限する処理をOnValidate関数に実装しておくことで
不正な値が入力されることを防ぐことができます