【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-

7 件のコメント

  • 失礼します。この記事を参考に自分もスクリプトを組んでみましたが、Enterのところのcorrectがコンキテキストに存在しないというエラーが出ました。どこかでcorrectについて記述しなければならないと考えていますが、どこで書けばいいでしょうか。ご教示いただければ幸いです

    • コメントありがとうございます。
      説明不足ですいませんでした。
      correctはPasswordPanelの中のpwArrayを宣言している場所で同じようにintの配列として宣言します。
      correctはpublicで宣言しておくとインスペクタから4けたの答えを柔軟に入力できるのでオススメです。

      • ご返信ありがとうございます
        On ClickEnterの関数内で
        int correct []という形で宣言する
        という認識で大丈夫でしょうか?

        • 並びに、正解のパスワードはどのようにスクリプト内で宣言すれば良いでしょうか?

          • 返信ありがとうございます。
            分かりづらくてすいません。
            記事中の最初のソースコード内にcorrectを追加したので参考にして下さい。

  • コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です

    ABOUTこの記事をかいた人

    個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog