【Unity uGUI】InputFieldを用いてテキスト入力を受け取る方法
ゲーム内で「テキスト入力を受け取りたい」ということがあるのではないでしょうか。
RPGゲームなどで主人公の名前を設定するときにもテキスト入力を受け取らなければいけません。
この機能を実装したいときに役に立つのが「InputField」です。
Contents
InputFieldとは
InputFieldとは「見える UI 制御ではなく、編集可能な Text を作成する方法」です。(公式マニュアルより)
誰もがイメージするテキストの入力フォームという認識で問題ありません。
このInputFieldを利用してテキスト入力を受け取る方法をご紹介していきます。
使用方法
サイズ設定
まずはじめにInput Fieldをシーンに呼び出します。
ヒエラルキーウィンドウのCreate→UI→InputFieldを選択してください。
作成したInputFieldをヒエラルキーウィンドウで選択してサイズを変更します。
ここではRectTransform→Width = 300 ,Height = 50としていますが、お好きなサイズに変更していただいて構いません。
初期テキストの変更
初期テキストの変更方法はとても簡単です。
ヒエラルキーウィンドウのCanvas→InputField→Placeholderを選択してください。
選択したらインスペクターウィンドウのText欄を変更することで初期に入力されているテキストを変更することができます。
変更したテキストはそのまま反映されます。
入力されたテキストの受け取り方
テキストはスクリプトを利用して受け取ることができます。
今回は入力されたテキストをエンターが押されたと同時にコンソールに出力する方法を解説していきます。
まずはスクリプトから解説していきます。今回利用するスクリプトは以下の通りです。
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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class InputFieldManager : MonoBehaviour { //InputFieldを格納するための変数 InputField inputField; // Start is called before the first frame update void Start() { //InputFieldコンポーネントを取得 inputField = GameObject.Find("InputField").GetComponent<InputField>(); } //入力された名前情報を読み取ってコンソールに出力する関数 public void GetInputName() { //InputFieldからテキスト情報を取得する string name = inputField.text; Debug.Log(name); //入力フォームのテキストを空にする inputField.text = ""; } } |
詳しく解説していきます。
まずUIのコンポーネントを使用するためには4行目のような記述をする必要があります。
1 |
using UnityEngine.UI; |
これによってUIのコンポーネントを使用することが可能になります。
9行目でInputField型の変数を準備しておいて、Start関数で呼び出しています。GameObjectクラスには「Find」という関数が存在しており、名前を指定することで指定されたゲームオブジェクトを呼び出すことができます。また、呼び出されたInputFieldのコンポーネントを取り出すために「GetComponent<〇〇>()」を使用しています。これによってInputFieldコンポーネントを呼び出すことができます。
1 2 3 4 5 6 7 8 9 |
//InputFieldを格納するための変数 InputField inputField; // Start is called before the first frame update void Start() { //InputFieldコンポーネントを取得 inputField = GameObject.Find("InputField").GetComponent<InputField>(); } |
21行目のGetInputName関数では、入力されたテキストを取得して変数に格納し、コンソールに出力しています。また、コンソールへの出力が終わった後にテキストを初期化しています。
1 2 3 4 5 6 7 8 9 |
//入力された名前情報を読み取ってコンソールに出力する関数 public void GetInputName() { //InputFieldからテキスト情報を取得する string name = inputField.text; Debug.Log(name); //入力フォームのテキストを空にする inputField.text = ""; } |
このGetInputName関数をInputFieldのOnEndEditに登録することでテキストを取得することが可能になります。
まずは記述したスクリプトを任意のオブジェクトにアタッチしてください。ここではMainCameraにアタッチしておきます。
次にヒエラルキーウィンドウでInputFieldを選択してください。
インスペクターウィンドウでOnEndEditにGetInputName関数を登録します。
手順は以下の通りです。
これで準備は完了です。実際に実行して確認してみましょう。
入力したテキストがコンソールに出力されることが確認できました。
まとめ
いかがでしたでしょうか。
今回はInputFieldを用いてテキスト入力を受け取る方法をご紹介してきました。
この処理を応用すれば、RPGでの名前入力などにも応用できるのではないでしょうか。
UnityのUIに関する情報を随時ご紹介していきたいと思っておりますのでぜひご参考ください。
この記事はいかがでしたか?
もし「参考になった」「面白かった」という場合は、応援シェアお願いします!