【Unity】パスワード入力パネルを作成する方法

unity

パスワード入力機能を作成してみました。

動画のようにパソコンがタッチされるとパスワード入力画面が出現するようにしました。

パネルの中に画像やテキストを並べて作成しています。

public class PasswordPanel : MonoBehaviour
{
    // パスワード入力を入れる配列
    int[] pwArray;
    //答えを入れる配列
    int[] correct = new int[] { 1, 2, 3, 0 };
    // 画像の配列
    public Image[] buttons;
    // 画像ソースの配列
    public Sprite[] sprites;
    // タイトルメッセージ
    public Text message;

各ボタンの初期設定画像(0の画像)、スプライト(0~3の画像ソース)を配列で宣言して保存し、UnityのInspectorで下記のように初期値を設定します。

 

ボタンが押されたときの処理onClickPasswordを以下のように作成しました。

    // パスワードボタンが押されたら呼ばれる。positionはボタン番号を表す。
    public void onClickPassword(int position)
    {
        Debug.Log("password" + position);
        changeNumber(position);
        showNumber(position);
    }

    // 管理している番号を+1する。
    void changeNumber(int position)
    {
        int tmp = pwArray[position];
        tmp++;
        tmp %= 4;
        pwArray[position] = tmp;
        Debug.Log(position + "::" + tmp);
    }

    // 画像を変更する。
    void showNumber(int position)
    {
        int tmp = pwArray[position];
        buttons[position].sprite = sprites[tmp];
    }

4つある各ボタンのOn Clickに上で作成したonClickPasswordを設定します。

引数には0~3が入り、ボタン番号を表します。

最後にEnterボタンが押された時に答え合わせをします。

    //エンターボタンが押されたら呼ばれる
    public void onClickEnter()
    {
        // using System.Linq;が必要。
        if (pwArray.SequenceEqual(correct))
        {
            message.text = "OK!!!!!";
        }
        else
        {
            message.text = "間違っています!!!";
        }
    }

配列の比較ができるLinqのSequenceEqualを使うと4桁パスワードの答え合わせができます。

便利ですね。

終わり。

追記:よりリアルな物も作ってみました。

【Unity】パスワード入力パネルを作ってみた-その2-