以下の内容はhttps://bluebirdofoz.hatenablog.com/entry/2023/11/22/233508より取得しました。


UnityのInspectorビューのフィールド入力をエンターキーを入力したタイミングで確定させる

本日は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という文字を入力する際、以下の通りエンターキーで入力を確定したタイミングでのみ値の更新が発生します。




以上の内容はhttps://bluebirdofoz.hatenablog.com/entry/2023/11/22/233508より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14