本日は TextMeshPro の小ネタ枠です。
TextMeshPro の InputField に入力があったときに処理を実行する方法を記事にします。
OnEndEdit
OnEndEdit は InputField の文字列入力が完了したときに実行されるイベントです。
本イベントを利用することでユーザが文字列の入力を終えたときに実行する処理を設定できます。
docs.unity3d.com
srcInputField.onEndEdit.AddListener(text => { // ユーザの文字列の入力が完了したときの処理 });
サンプルスクリプト
以下のコピー元の InputField が更新されると、自動でコピー先の InputField に同じ文字列を入力するサンプルスクリプトを作成しました。
・TextCopyEndEdit.cs
using System; using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; public class TextCopyEndEdit : MonoBehaviour { /// <summary> /// コピー元テキスト /// </summary> [Header("コピー元テキスト"), SerializeField] private TMP_InputField srcInputField; /// <summary> /// コピー先テキスト /// </summary> [Header("コピー先テキスト"), SerializeField] private TMP_InputField destInputField; private void Start() { // コピー元テキストが入力完了したときに同期する srcInputField.onEndEdit.AddListener(text => destInputField.text = text); } }
2つの InputField があるサンプルシーンを作りました。
それぞれ上側をコピー元、下側をコピー先として参照を設定します。
シーンを再生して確認します。
上側の InputField の入力中には更新が実行されず、入力を完了(Enter)したタイミングで下側の InputField に同じ文字列が入力されるようになりました。