Aizu-Progressive xr Lab blog

会津大学のVR部であるA-PxLの部員が持ち回りで投稿していくブログです。部員がそれぞれVRに関する出来事やVRにちなんだことについて学んだことを書いていきます。

「面白法人カヤックVR分室」としても活動しています。詳細はこちら

二択クイズを作りたかった。

どうも、会津大学vr部の安江です。今回は先月行われた健康ハッカソンで自分がやったことを紹介できればと思います。

今回自分がやったことは、題にもある通り二択クイズを作ることです。

まずは問題の画面から作って行きます。用意するものは

・問題文

・回答ボタン

の二つになります。

Hierarchyでtextとbuttonを2つ作り、それぞれの名前をqlabel,ans1,ans2としておきます。f:id:aizu-vr:20190128011027p:plain 次に問題と解答の挿入をやって行きます。問題は簡単な「朝食は抜いてもいいか」としておきます。

public class QuizeSystem : MonoBehaviour {

void Start()
{

    QuestionLabelSet();
    AnswerLabelSet();

}

 void QuestionLabelSet()
{
    Text qLabel = GameObject.Find("Quize/Qlabel").GetComponentInChildren<Text>();

    qLabel.text = "忙しいとき朝食は抜いてもいい?";

}

void AnswerLabelSet()
{

    string[] array = new string[] { "1:yes","2:no"};

    for (int i = 1; i <= 2; i++)

    {
        Text ansLabel = GameObject.Find("Quize/Ansbutton" + i).GetComponentInChildren<Text>();
        ansLabel.text = array[i - 1];
    }
}

}

スクリプトはこんな感じです。UIを使うため、最初に忘れないように using unity engine ui をつけましょう。

最初のQuestionLabelSetで問題文の挿入を行います。Quizeというcanvasの下にあるqlabelを探し、textを扱えるようにしています。

次にAnswerLavelSetで配列の中にyesとnoの答えを格納し、それをそれぞれans1とans2にくっつくようにgetcomponentしています。

f:id:aizu-vr:20190128005040p:plain

次に答えの正否の判断を行います。

public class Judge1 : MonoBehaviour{

public void JudgeAnswer()
{

    string answerText = "1:yes";

    Text selectedBtn = this.GetComponentInChildren<Text>();

    if (selectedBtn.text == "2:yes")
    {
        Debug.Log("正解");
    }
    else
    {
        Debug.Log("不正解");
    }
}

}

これはyesを押された時、その問題によってコンソールに正解、不正解を表示させます。同様にnoが押された時のスクリプトを書きましょう。このスクリプトがかけたら

Canvas→Button 「On Click」「+」ボタンでイベントを追加。 Buttonのゲームオブジェクト自身をドラッグ&ドロップで割り当てる。

この2つを行いますf:id:aizu-vr:20190128005856p:plain

実行をすると、、、

f:id:aizu-vr:20190128010207p:plain

コンソールに正解、不正解がでました👏

実は今回僕がやった大部分はこれが占めていて、他はちょろっとしたことなのでここまでにしておきます。(バイトに追われいました、許してください🙇‍♂️)

UIを使ってコードを書くことはあまりしてこなかったので、また新しく、進歩した感じです。それではここまでありがとうございました。

会津大学VR部の部員が持ち回りで投稿していくブログです。特にテーマに縛りを設けずに書いていきます!