本日はUnityの小ネタ枠です。
UnityのInspectorビューのフィールド入力をエンターキーを入力したタイミングで確定させる方法です。
DelayedAttribute
DelayedAttributeを指定すると、float/int/string型のフィールドはエンターキーを押したとき、またはフィールドからフォーカスが離れた時に値が確定します。
docs.unity3d.com
OnValidate
OnValidate()関数はInspectorの値が変更されたタイミングで呼び出されます。
これを使ってDelayedAttributeを指定した場合と指定していない場合のフィールドの反映タイミングを確認してみます。
docs.unity3d.com
サンプルスクリプト
Delayed属性を付けたstringフィールドと付けていないフィールドを比較する以下のサンプルスクリプトを作成しました。
・DelayedTest.cs
using UnityEngine; public class DelayedTest : MonoBehaviour { [SerializeField] private string normalField = string.Empty; [SerializeField, Delayed] private string delayedField = string.Empty; void OnValidate() { Debug.Log($"normalField: {normalField}, delayedField: {delayedField}"); } }
Delayed属性を付けていないフィールド
abcdfという文字を入力する際、以下の通り一文字の入力ごとに値の更新が発生します。
Delayed属性を付けたフィールド
abcdfという文字を入力する際、以下の通りエンターキーで入力を確定したタイミングでのみ値の更新が発生します。