UnityにおけるInput Fieldの「On End Edit ()」イベントの設定方法

この資料では、UnityのInput Fieldコンポーネントにおいて、ユーザーがテキスト入力を確定した際に処理を実行する「On End Edit ()」イベントの設定方法を解説します。Input Fieldは、フォームやゲームUIでユーザーの入力を受け取る重要なUI要素です。ここでは、インスペクターとスクリプトの両方を使用してイベントを設定する方法を紹介します。


1. Input Fieldの作成

  1. UnityエディタのGameObjectメニューから、UI > Input Fieldを選択します。
  2. シーンにInput Fieldが追加され、キャンバス上に表示されます。

2. スクリプトの作成

次に、テキスト入力確定時に呼び出される関数を含むスクリプトを作成します。

using UnityEngine;

public class InputFieldHandler : MonoBehaviour
{
    // この関数がテキスト入力確定時に呼び出されます
    public void OnInputEnd(string inputText)
    {
        Debug.Log("ユーザーが入力したテキスト: " + inputText);
    }
}
  • OnInputEnd関数は、ユーザーが入力したテキストを受け取り、その内容をコンソールに表示します。

スクリプトのアタッチ

このスクリプトを、Input Fieldが存在するオブジェクトか、適当な別のゲームオブジェクトにアタッチします。Unityエディタ内でスクリプトをドラッグ&ドロップして、オブジェクトにアタッチします。


3. インスペクターでの「On End Edit ()」イベントの設定

  1. Input Fieldオブジェクトを選択し、インスペクターを開きます。
  2. インスペクターの「Input Field (Script)」セクションに、「On End Edit ()」という項目があります。この項目が、ユーザーがテキストを入力し確定した際に発生するイベントです。
  3. On End Edit ()」の右側にあるプラスボタン(+をクリックして、新しいイベントリスナーを追加します。
  4. 新しく追加されたリスナーの左側にあるオブジェクトフィールド(空欄)に、作成したスクリプトがアタッチされているオブジェクトをドラッグ&ドロップします。
  5. ドロップダウンメニューをクリックして、登録可能な関数のリストからOnInputEnd (string)関数を選択します。メニューに表示される形式は、<スクリプト名> -> <関数名 (引数の型)>です。今回の場合は、InputFieldHandler -> OnInputEnd (String)という形式で表示されます。

4. コードでイベントを登録する方法

イベントをインスペクターで設定するだけでなく、スクリプトを使ってプログラム的にイベントを登録することも可能です。次の例では、スクリプト内でInput FieldonEndEditイベントにリスナーを追加しています。

スクリプト例:コードでイベントを登録

using UnityEngine;
using UnityEngine.UI; // InputFieldを使うために必要

public class InputFieldHandler : MonoBehaviour
{
    public InputField inputField; // Input Fieldの参照を保持

    void Start()
    {
        // コードでイベントハンドラを登録
        inputField.onEndEdit.AddListener(OnInputEnd);
    }

    // ユーザーがテキストを入力確定した時に呼ばれる
    void OnInputEnd(string inputText)
    {
        Debug.Log("ユーザーが入力したテキスト: " + inputText);
    }
}
  • inputField.onEndEdit.AddListener(OnInputEnd) は、OnInputEnd関数をイベントリスナーとして追加しています。このリスナーは、ユーザーがテキスト入力を終了(確定)したときに呼び出されます。

コードでイベントを登録する手順

  1. InputFieldコンポーネントを持つゲームオブジェクト(Input Field)を作成します。
  2. 上記スクリプトをプロジェクトに作成し、Input Fieldにアタッチします。
  3. Input Fieldフィールドには、Unityエディタからインスペクターを通じて対応するInputFieldコンポーネントをドラッグ&ドロップして割り当てます。
  4. ゲームを実行すると、ユーザーがテキストを確定するたびに、OnInputEnd関数が呼び出されます。

5. 実行と動作確認

  1. ゲームを実行して、Input Fieldにテキストを入力します。
  2. テキストを入力し終えて、Enterキーを押すか、Input Fieldのフォーカスが外れると、設定したOnInputEnd関数が呼び出されます。
  3. 入力されたテキストがコンソールに出力されます。

ユーザーが入力したテキスト: こんにちは


6. イベントの動作概要

  • On End Edit () イベントInput Fieldにおいて、ユーザーがテキスト入力を終了した際に発生するイベントです。終了のタイミングは、Enterキーを押すか、フィールドからフォーカスが外れたときです。
  • インスペクターでイベントを設定: Unityエディタのインスペクター上で簡単にイベントハンドラを設定できます。これにより、スクリプトを書くことなく、UIの操作に応じた処理を実行可能です。
  • コードでのイベント登録: スクリプト内でプログラム的にイベントリスナーを追加することで、柔軟なイベント処理が可能です。AddListenerメソッドを使用して、特定の処理を追加できます。

まとめ

この技術資料では、Input FieldOn End Edit ()イベントをインスペクターおよびスクリプトで設定する方法を紹介しました。イベントをコードで管理することで、インスペクターだけでは実現できない柔軟な制御が可能になります。Unityでのユーザー入力の処理を簡単に実装できるため、インタラクティブなゲームやアプリケーションを作成する際に役立ちます。

Unity

Posted by hidepon