二択クイズを作りたかった。
どうも、会津大学vr部の安江です。今回は先月行われた健康ハッカソンで自分がやったことを紹介できればと思います。
今回自分がやったことは、題にもある通り二択クイズを作ることです。
まずは問題の画面から作って行きます。用意するものは
・問題文
・回答ボタン
の二つになります。
Hierarchyでtextとbuttonを2つ作り、それぞれの名前をqlabel,ans1,ans2としておきます。
次に問題と解答の挿入をやって行きます。問題は簡単な「朝食は抜いてもいいか」としておきます。
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しています。
次に答えの正否の判断を行います。
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つを行います
実行をすると、、、
コンソールに正解、不正解がでました👏
実は今回僕がやった大部分はこれが占めていて、他はちょろっとしたことなのでここまでにしておきます。(バイトに追われいました、許してください🙇♂️)
UIを使ってコードを書くことはあまりしてこなかったので、また新しく、進歩した感じです。それではここまでありがとうございました。