前回の簡単なパスワード機能につづいて、今回は入力フィールド(InputField)の表示、非表示について見ていきましょう。
※このページをご覧になる前に、前回記事「簡単なパスワード機能をつくる」を制作してください。
Sphereをクリックすると、パスワード入力欄が表示され、パスワードが合っていれば、Cubeが消える。
関連記事:
パスワード付きドアの作成
かんたんなパスワード機能を実装する
入力テキストを順番に配列に入れる
InputFieldの表示と非表示
新しくSphereを作成し、Cubeと横並びにしました。
InputFieldがスタート時には消えていて、Sphereをクリックしたときに表示される仕組みをつくります。
GameObject(空のオブジェクト)に追加しているInputText.csを編集しています。
今回追加したコードには、コメントを入れています。
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 33 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class InputText : MonoBehaviour { public InputField inputField; public GameObject cube; public GameObject fieldObject;//InputFieldオブジェクトを格納 void Start () { inputField = inputField.GetComponent<InputField> (); cube = GameObject.Find("Cube"); //InputFieldオブジェクトを非表示 fieldObject = GameObject.Find("InputField"); fieldObject.SetActive(false); } //InputFieldオブジェクトを表示 public void FieldActive() { fieldObject.SetActive(true); } public void SetText(){ if ( inputField.text == "1234") cube.GetComponent<CubeAppear>().CubeHide(); } } |
InputFieldオブジェクトは、GameObject.Findで取得。
スタート時は、SetActiveをfalseに。
新しくFieldActive()メソッドを作成し、これをSphereクリックのタイミングでtrueにします。
オブジェクトをクリックすれば表示
次はSphereのほうに、クリックのアクションをつけましょう。
新しくSphereClickというスクリプトを作成し、Sphereに追加しました。
SphereClick.csはこのように書きました。
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; public class SphereClick : MonoBehaviour { public GameObject gameObject; void Start() { //ヒエラルキーにある「GameObject(空のオブジェクト)」を格納 gameObject = GameObject.Find("GameObject"); } //クリックしたとき void OnMouseDown() { //GameObjectのInputTextクラスのFieldActive()を実行する gameObject.GetComponent<InputText>().FieldActive(); } } } |
FieldActive()メソッドを実行するタイミングは、左クリックしたときです。
他のスクリプトの関数を実行するのは、GetComponentを使用するんでしたね。
プレイして、パスワード入力の流れを確認します。
Sphereをクリックで、入力フィールドが現れる。
パスワード「1234」を入れてEnterを押すと、Cubeが消えます。