【Unity uGUI】InputFieldを用いてテキスト入力を受け取る方法


ゲーム内で「テキスト入力を受け取りたい」ということがあるのではないでしょうか。

RPGゲームなどで主人公の名前を設定するときにもテキスト入力を受け取らなければいけません。

この機能を実装したいときに役に立つのが「InputField」です。

テキスト入力イメージ

InputFieldとは

InputFieldとは「見える UI 制御ではなく、編集可能な Text を作成する方法」です。(公式マニュアルより

テキスト入力例
テキスト入力例

誰もがイメージするテキストの入力フォームという認識で問題ありません。

InputField
Input Field

このInputFieldを利用してテキスト入力を受け取る方法をご紹介していきます。

使用方法

サイズ設定

まずはじめにInput Fieldをシーンに呼び出します。

ヒエラルキーウィンドウのCreate→UI→InputFieldを選択してください。

InputField作成
InputField作成手順

作成したInputFieldをヒエラルキーウィンドウで選択してサイズを変更します。

ここではRectTransform→Width = 300 ,Height = 50としていますが、お好きなサイズに変更していただいて構いません。

InputFieldサイズ
InputFieldのサイズ
Width=300,Height=50
Width=300,Height=50の見た目

初期テキストの変更

初期テキストの変更方法はとても簡単です。

ヒエラルキーウィンドウのCanvas→InputField→Placeholderを選択してください。

Placeholder選択
Placeholderを選択

選択したらインスペクターウィンドウのText欄を変更することで初期に入力されているテキストを変更することができます。

初期テキスト変更
初期テキスト変更方法

変更したテキストはそのまま反映されます。

初期テキスト変更結果
初期テキスト変更結果

入力されたテキストの受け取り方

テキストはスクリプトを利用して受け取ることができます。

今回は入力されたテキストをエンターが押されたと同時にコンソールに出力する方法を解説していきます。

まずはスクリプトから解説していきます。今回利用するスクリプトは以下の通りです。

詳しく解説していきます。

まずUIのコンポーネントを使用するためには4行目のような記述をする必要があります。

これによってUIのコンポーネントを使用することが可能になります。

9行目でInputField型の変数を準備しておいて、Start関数で呼び出しています。GameObjectクラスには「Find」という関数が存在しており、名前を指定することで指定されたゲームオブジェクトを呼び出すことができます。また、呼び出されたInputFieldのコンポーネントを取り出すために「GetComponent<〇〇>()」を使用しています。これによってInputFieldコンポーネントを呼び出すことができます。

21行目のGetInputName関数では、入力されたテキストを取得して変数に格納し、コンソールに出力しています。また、コンソールへの出力が終わった後にテキストを初期化しています。

このGetInputName関数をInputFieldのOnEndEditに登録することでテキストを取得することが可能になります。

まずは記述したスクリプトを任意のオブジェクトにアタッチしてください。ここではMainCameraにアタッチしておきます。

次にヒエラルキーウィンドウでInputFieldを選択してください。

インスペクターウィンドウでOnEndEditにGetInputName関数を登録します。

手順は以下の通りです。

関数登録
OnEndEdit登録方法

これで準備は完了です。実際に実行して確認してみましょう。

InputField実行結果
実行結果

入力したテキストがコンソールに出力されることが確認できました。

まとめ

いかがでしたでしょうか。

今回はInputFieldを用いてテキスト入力を受け取る方法をご紹介してきました。

この処理を応用すれば、RPGでの名前入力などにも応用できるのではないでしょうか。

UnityのUIに関する情報を随時ご紹介していきたいと思っておりますのでぜひご参考ください。


Furui