入力フィールド(InputField)を使えば、ゲーム画面で入力をすることができます。
かんたんなパスワード機能を実装しましょう。
InputFieldに「1234」と入力してEnterキーを押すと、Cubeが消える仕組みをつくってみます。
関連記事:
【Unity C#】パスワード付きドアの作成
【Unity C#】入力テキストを順番に配列に入れる
InputFieldを使った入力エリア
ヒエラルキー > UI > 入力フィールド(InputField) を作成しましょう。
Canvasの下に、InputFieldができています。
座標をかえて、Cubeオブジェクトの近くに配置しました。
続いて、ヒエラルキ > 空のオブジェクトを作成しましょう。
GameObjectが表示されます。
スクリプトを2つ作ります。
CubeAppareと、InputTextという名前で作成します。
CubeAppareは、Cubeに追加します。
InputTextは、GameObjectに追加します。
InputFieldのテキストを取得
まずは、CubeAppareからスクリプトを書いていきましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeAppear : MonoBehaviour { // Start is called before the first frame update void Start() { gameObject.SetActive (true); } public void CubeHide() { gameObject.SetActive (false); } } |
これはCubeを表示、非表示させるためだけのコードです。
スタートのときは表示していて、パスワードが合っていれば、消える仕組みをつくります。
次に、InputTextのスクリプトを書きましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class InputText : MonoBehaviour { public InputField inputField; public GameObject cube; void Start () { inputField = inputField.GetComponent<InputField> (); cube = GameObject.Find("Cube"); } public void SetText(){ if ( inputField.text == "1234") cube.GetComponent<CubeAppear>().CubeHide(); } } |
InputFieldの入力と、1234の文字列が合致すれば、CubeHideメソッドを実行します。
GameObjectのインスペクターに、InputFieldオブジェクトを入れましょう。
InputFieldの入力設定
InputFieldのオブジェクトを選び、インスペクターの下のほうを確認します。
「入力完了時」の項目で、「+」マークから設定を追加しましょう。
「入力完了時」はテキスト入力してEnterを押したときに実行されます。
ちなみに「値の変化時」はテキスト入力している間、ずっと実行されます。
RuntimeOnlyの下の項目は、GameObjectを選びます。
右側の項目は、InputText > SetText()を選びましょう。
プレイして、パスワード1234を入力し、Enterキーを押してみましょう。
Cubeが消えればOKです。
試しに、間違ったパスワードも入力して、表示を確認しておきましょう。
このように、InputFieldに入れた情報を変数で取得し、文字列として比較するしくみを作っています。