MRが楽しい

MRやVRについて学習したことを書き残す

TextMeshProのInputFieldに入力があったときに処理を実行する

本日は TextMeshPro の小ネタ枠です。
TextMeshPro の InputField に入力があったときに処理を実行する方法を記事にします。

OnValueChanged

OnValueChanged は InputField の文字列が変更されたときに実行されるイベントです。
本イベントに文字列が更新されたときに実行したい処理を登録することで InputField に入力があったときの処理を実装できます。
docs.unity3d.com

srcInputField.onValueChanged.AddListener(text => 
{
    // 文字列の入力があった場合の処理
});

サンプルスクリプト

以下のコピー元の InputField が更新されると、自動でコピー先の InputField に同じ文字列を入力するサンプルスクリプトを作成しました。
・TextCopy.cs

using TMPro;
using UnityEngine;

public class TextCopy : MonoBehaviour
{
    /// <summary>
    /// コピー元テキスト
    /// </summary>
    [Header("コピー元テキスト"), SerializeField]
    private TMP_InputField srcInputField;
    
    /// <summary>
    /// コピー先テキスト
    /// </summary>
    [Header("コピー先テキスト"), SerializeField]
    private TMP_InputField destInputField;

    private void Start()
    {
        // コピー元テキストが更新されたときに同期する
        srcInputField.onValueChanged.AddListener(text => destInputField.text = text);
    }
}

2つの InputField があるサンプルシーンを作りました。
それぞれ上側をコピー元、下側をコピー先として参照を設定します。

シーンを再生して確認します。
上側の InputField を更新すると、同時に下側の InputField に同じ文字列が入力されるようになりました。