【Unity】InputField入力中にEnterキーで関数を実行する方法

悩む人

InputField入力時にエンターキーで送信したいな〜

こんな要望にお応えします。

Unityの開発において、UIの操作性はユーザーエクスペリエンスに大きく影響します。

特に、テキスト入力を行う際に入力後に別のボタンをクリックする手間を省くことは、アプリケーションの使い勝手を大幅に向上させることができます。

今回は、UnityのInputFieldコンポーネントで、エンターキーを押すだけで特定の関数を実行する方法について解説します。

目次

結論: onEndEditイベントの利用

結論、InputFieldのonEndEditを使えば達成できます。

UnityのInputFieldには、テキスト入力が終了した際に発生するイベントonEndEditがあります。

このイベントを利用して、エンターキーが押されたときに特定の処理を実行することができます。

実装方法

以下の方法で実装できます。

実装方法
  1. 必要なコンポーネントのインポート
  2. イベントリスナーのスクリプトの作成

以下で解説していきます。

Step1: 必要なコンポーネントのインポート

まずは、以下の必要な名前空間をインポートします。

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

Step2: イベントリスナーのスクリプトの作成

続いて、イベントリスナーを付与するスクリプトを作成します。

public class YourClass : MonoBehaviour
{
    public InputField inputField;

    void Start()
    {
        inputField.onEndEdit.AddListener(EnterPressed);
    }
    void OnDestroy()
    {
        inputField.onEndEdit.RemoveListener(EnterPressed);
    }

    private void EnterPressed(string text)
    {
        if (Input.GetKeyDown(KeyCode.Return) || Input.GetKeyDown(KeyCode.KeypadEnter))
        {
            // ここで任意の関数を呼び出します
            YourFunction();
        }
    }

    private void YourFunction()
    {
        // Enterキーが押された時に実行するコード
    }
}

コード解説

以下でコードについて軽く解説します。

Startメソッド内

inputFieldonEndEditイベントにEnterPressedメソッドをリスナーとして追加します。

これによりinputFieldへの入力が終了した際に、EnterPressedメソッドが実行されるようになります。

OnDestroyメソッド内

Start内でinputFieldonEndEditイベントに追加したEnterPressedメソッドを削除します。

これを行わない場合、このスクリプトが付与されたオブジェクトが破棄された後にもonEndEditをリッスンするようになり、予期せぬ処理が行われバグなどに繋がります。

トマトソース

なので、イベントをリッスンした場合は必ずどこかのタイミングでリッスンを解除するようにしましょう。

エンターキーを押した場合の処理

if (Input.GetKeyDown(KeyCode.Return) || Input.GetKeyDown(KeyCode.KeypadEnter))でエンターキーが押されたかを判定しています。

もし、true(エンターキーが押された)であれば、YourFunctionメソッドが呼び出されるようになっています。

まとめ

今回は、UnityのInputFieldでEnterキーを使って関数を実行する方法について解説しました。

この方法により、ユーザーはテキスト入力後に別のボタンを押す必要がなくなり、より良いユーザー体験を提供できるようになると思います。

ぜひ活用してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次