UnityでInputFieldのテキストを取得する

2019年3月29日

Unity で、テキスト入力ボックスといえば InputField です。
編集されたテキストを受け取りたかったので公式リファレンスを読んだのですが、使い方に少し悩んだのでまとめておきます。

公式リファレンスはこちら。
Unity – マニュアル: Input Field (入力フィールド)

スポンサーリンク

値が変わったら受け取る

Inspector の Input Field (Script) にある On Value Change (String) を使うと、Input Field での入力中に値が変わるたびに入力値を取得できます。

まず、通知を受け取るメソッドを用意します。
Sample という名称でスクリプトを作成して、Input Field の Component に追加します。
この例では、Sample.cs に public void ValueChange(string text) というメソッドを定義しておきます。

public void ValueChange (string text)
{
    Debug.Log(text);
}

Input Field の Inspector から、On Value Change に項目を追加します。

次に、Input Field を On Value Change のオブジェクトに設定します。

そして、On Value Change のタイミングで呼び出されるメソッドを設定します。
このとき、メソッド一覧には “Dynamic String" と “Static Parameter" のふたつの項目が表示されます。
ValueChanged() は、どちらにも表示されますが、ここでは “Dynamic String" に表示されているメソッドを選びます。
※メソッドを public で宣言していない場合、この一覧には表示されません。

これで、テキスト入力中に値が変わるたびに ValueChange() が呼び出されるようになります。

編集が終わったら受け取る

Inspector の Input Field (Script) にある End Edit (String) を使うと、Input Field からフォーカスが外れた時の入力値を取得できます。
設定方法は、On Value Change と同じなので、割愛します。気をつけるのは、Inspector でのメソッドの選択だけです。
On Value Change と同じように、"Dynamic String" に表示されているメソッドを選択すれば、引数で入力値を受け取ることができます。

おしまい。

スポンサーリンク