モズク食べる

雑食雑記

UnityでInputFieldのTextとCharを文字列比較したい

◆UnityでInputFieldのTextとCharを文字列比較したい

【目的】

脱出ゲームにありがちな

ユーザに鍵となる文字列を直接入力してもらい

スクリプトで正解の鍵と文字列比較して答え合わせする

っていうのをつくりたい。

 

ダイヤルでアルファベット選択するほうがよく見るのだけど

練習も兼ねているのでInputFieldを使う方でチャレンジしたい。

◆手順

【完成イメージ】

「PASSWORD?」の部分をクリック(タップ)すると文字入力を受け付けます。 「ENTER」の部分をクリック(タップ)すると、答え合わせをします。

f:id:mozukuino:20190105021536g:plain

C#スクリプト(初心者なので微妙な可能性あり)】

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class EscapeGameManager : MonoBehaviour {

    public GameObject buttonMessagePC; //メッセージ表示用ボタン
    public GameObject buttonMessageTextPC; //メッセージテキスト
    InputField inputField; //パスワード入力ボックス
    public const string TruePASS = "UNITY";  //正しいパスワード

    void Start () {
        inputField = GameObject.Find("InputField").GetComponent<InputField>();
    }
    
    // Update is called once per frame
    void Update () {   
    }

    public void PushButtonEnter()
    {
     string pass = inputField.text;

     if (pass.ToLower() == TruePASS.ToLower())
        {
         DisplayMessagePC("正解!▼");
        }
        else
        {
            DisplayMessagePC("ブッブー!▼");
        }
    }

//PCメッセージを表示
    void DisplayMessagePC(string message)
    {
        buttonMessagePC.SetActive(true);
        buttonMessageTextPC.GetComponent<Text>().text = message;
    }
    
//Back(PC)を押した
    public void PushButtonBackfromPC()
    {
        buttonMessagePC.SetActive(false);     //メッセージを消す
        inputField.text = "";     //InputFieldの文字を消す
    }

Unity側は普通にインスペクタの変数に適用して メソッドを割り当てるだけです。

【ぼやき】

初心者すぎて 、

 ・InputFieldに入力された文字列を取ってくる方法がわからん

 ・InputFieldから取ってきた文字列がStringじゃないけど型変換がわからん

 ・代入用のString型変数宣言はここに書いていいのか…?

 ・大文字小文字無視はCSでどう書くんだ……

と順序を追って全部調べる羽目になりました。

先人ブロガーの皆様に多謝。