UnityのInputFieldの使い方をマスターしたい!
どうも、Linです。コーヒー、毎日注入してます。
Unityでゲームを作っていると、たまに、
InputFieldで入力した文字をテキストで表示したい
というときがでてくると思います。
オンラインゲームのチャット機能を作っている時とか、ユーザーの答えを知りたいクイズゲームとかで必要になってくるでしょう。
今日は、UnityのInputFieldの使い方を完全に我流ではありますが、マスターしたような気がしているので忘れないうちにまとめておきます。
よかったら参考にしてみてください。
3分でわかる!UnityのInputFieldの使い方
今回は例として、
InputFieldに入力したテキストを表示する2Dゲーム
を作成していきますよ。

Step1. それぞれ配置
まずは、いろいろHierachey Viewに追加していきましょう。
今回は、
- InputField
- Text
- 空のゲームオブジェクト(GameObject)
を追加しておけばオッケーです。

便宜上、テキストの文字の色を白にしたり、大きくしたり、InputFieldの大きさを変更したりしました。
Step2. コード追加
空のゲームオブジェクトGameObjectに、スクリプトをアタッチして全体を制御していきます。
スクリト名を
GameController
とでもしてみましょう。
こいつを作成したら、GameObjectにアタッチ。
Step3. using UnityEngine.UI
さて、今回はキャンバス要素の、
- InputField
- Text
をコードで動かしていくので、スクリプトの冒頭に、
using UnityEngine.UI;
を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GameController : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } } |
Step4. 変数宣言
続いて、
- InputField型
- Text型
の2つの変数を宣言していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GameController : MonoBehaviour { InputField inputField; Text text; // Use this for initialization void Start () { } // Update is called once per frame void Update () { } } |
Step5. 変数に代入
先ほど宣言した変数に、InputFieldとTextのゲームオブジェクトを代入します。
今回はFindメソッドで名前を元に、呼び出してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GameController : MonoBehaviour { InputField inputField; Text text; // Use this for initialization void Start () { inputField = GameObject.Find ("InputField").GetComponent<InputField> (); text = GameObject.Find ("Message").GetComponent<Text> (); } // Update is called once per frame void Update () { } } |
※Textの名前をわかりやすいために「Message」に変更しました
Step6. 文字を代入する関数を作成
UnityのInputFieldでは、
- 入力が変更された時(On Value Changed)
- 入力の編集が終わった時(On Edit End)
という2つのタイミングで、とある関数を読み取ることができます。
InputFieldの入力を代入する関数を作成しておけば、好きなタイミングで入力をテキストに反映できるわけです。
ってことで、InputFieldに記入した文字を、テキストに代入するパブリックな関数InputTextを作成。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GameController : MonoBehaviour { InputField inputField; Text text; // Use this for initialization void Start () { inputField = GameObject.Find ("InputField").GetComponent<InputField> (); text = GameObject.Find ("Message").GetComponent<Text> (); } // Update is called once per frame void Update () { } public void InputText(){ text.text = inputField.text; } |
Step7. 関数を呼び出す設定
あとは、InputFieldで関数を呼び出すだけ。
今回は入力が変更された瞬間にテキストの内容を変えたいので、
InputFieldのInspector Viewの「On Value Changed」から関数を設定してみましょう。
+マークをクリックして、スクリプトがアタッチしてあるGameObjectを選択。
その中からスクリプを選んで、先ほど作成したInputText()を設定しましょう。
InputFieldの関数設定の要領は、Buttonの関数設定方法と同じですね。
これで設定完了です!
UnityのInputFieldの使い方はだいたいbuttonと一緒!
以上が、InputFieldの使い方でした。
- using UnityEngine.UI
- コンポーネント取得
- 関数で代入
まるでButtonとTextの使い方が混じったような感じですね。
うまくできると、次のようにInputFieldに入力した言葉が瞬時にテキストに表示されるはずです。

このInputFieldの使い方をマスターできれば、ユーザーの入力を読み取れる一段上のゲームアプリを作成できると思います。
「もっとUnityを深く基礎からみっちり学びたい!」
という方にはTECHACADEMYの「オンラインブートキャンプ Unityコース」がおすすめです。
Unityの使い方に詳しいメンターの方がオンラインで質問に答えてくれるので、独学より挫折することは少なくなると思います。
よかったら試してみてくださいね。
それでは!
Lin

おそらく、ブロガー。現在ホテル暮らしで全国フラフラしています。
ネット広告代理店に1年3ヶ月勤め上げ、独立をして丸4年が経ちました。今年でフリーランス 5年目。
質問・ご意見・相談があればLINEで受け付けていますのでお気軽にどうぞ 。
コメントを残す