実現したいこと
Unity(2D)で4択クイズを作成しています。
様々なサイトやこのサイトでの質問を参考にCSVファイルを読み込んで問題を表示させることができましたがどのボタンを押してもコンソールに設定している「正解」や「不正解」が表示されず画面遷移も行われないのでされるようにしたいです。
発生している問題・分からないこと
コンソールにすべての問題の問題文と選択肢、答えが表示されます。
エラーメッセージ
error
1エラーメッセージは出ていません。
該当のソースコード
QuizMgr
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using System.IO; 6using System.Linq; 7 8public class QuizMgr : MonoBehaviour 9{ 10 public string dataName; 11 public string title; 12 public TextAsset csvFile; 13 public List<string[]> csvDatas = new List<string[]>(); 14 public int height = 0; 15 public int i, j = 0; 16 public int k = 0; 17 internal Text ansLabel; 18 public string AnswerText; 19 const int size = 5; 20 21 void Awake() 22 { 23 24 title = "theme_"; 25 csvFile = Resources.Load("CSV/CSVDatas") as TextAsset; 26 StringReader reader = new StringReader(csvFile.text); 27 28 while (reader.Peek() > -1) 29 { 30 string line = reader.ReadLine(); 31 csvDatas.Add(line.Split(',')); 32 Debug.Log("reading:" + height); 33 height++; 34 } 35 36 for (i = 0; i < height; i++) 37 { 38 for (j = 0; j < size; j++) 39 { 40 Debug.Log("csvDatas[" + i + "][" + j + "]:" + csvDatas[i][j]); 41 } 42 } 43 44 QuestionLabelSet(); 45 AnswerLabelSet(); 46 AnswerSet(); 47 } 48 49 50 public void QuestionLabelSet() 51 { 52 csvDatas[k] = csvDatas[Random.Range(0, 4)]; 53 //特定の名前のオブジェクトを検索してアクセス 54 Text qLabel = GameObject.Find("Quiz/QLabel").GetComponentInChildren<Text>(); 55 //データをセットすることで、既存情報を上書きできる 56 qLabel.text = csvDatas[k][0]; 57 } 58 59 public void AnswerLabelSet() 60 { 61 //問題文に対応した答えをそれぞれのuGUIボタンにセット 62 string[] array = new string[] { csvDatas[k][1], csvDatas[k][2], csvDatas[k][3], csvDatas[k][4] }; 63 64 //問題文をシャッフル 65 array = array.OrderBy(x => System.Guid.NewGuid()).ToArray(); 66 67 //ボタンが4つあるのでそれぞれ代入 68 for (int i = 1; i <= 4; i++) 69 { 70 Text ansLabel = GameObject.Find("Quiz/AnsButton" + i).GetComponentInChildren<Text>(); 71 ansLabel.text = array[i - 1]; 72 } 73 } 74 75 public void AnswerSet() 76 { 77 //答えとなるcsvデータを変数として型に代入する 78 AnswerText = csvDatas[k][1]; 79 Debug.Log(AnswerText); 80 } 81 82 void Update() { } 83}
Judge
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using System.IO; 6using UnityEngine.SceneManagement; 7 8public class Judge : MonoBehaviour 9{ 10 11 QuizMgr quizMgr; 12 string answerText; 13 14 void Start() 15 { 16 quizMgr = GameObject.Find("Quiz").GetComponent<QuizMgr>(); 17 answerText = quizMgr.AnswerText; 18 Debug.Log(answerText); 19 } 20 21 //選択したボタンのテキストラベルと正解のテキストを比較して正誤を判定 22 public void Answer() 23 { 24 //選択したボタンのテキストを取得する 25 Text selectedBtn = this.GetComponentInChildren<Text>(); 26 27 if (selectedBtn.text == answerText) 28 { 29 Debug.Log("正解"); 30 SceneManager.LoadScene("Result"); 31 } 32 else 33 { 34 Debug.Log("不正解"); 35 SceneManager.LoadScene("Result"); 36 } 37 } 38}
試したこと・調べたこと
上記の詳細・結果
コンソールに何も表示されない状態から、全問題文、答えが表示されるようになってしまいました。
補足
QuizMgrのアタッチ先はQuizです。
CSVは以下のようになっています。(問題文は例です。)
あいうえお?,あ,い,う,え,え
次のうち正しい数学の定理はどれ?,オームの法則,オイラーの定理,三角関数,比例,オイラーの定理
日本の首都はどこですか?,京都,大阪,東京,福岡,東京
世界で一番大きな都市はどれですか?,東京,北京,モスクワ,ロンドン,北京
太陽系で最も大きな惑星はどれですか?,木星,地球,金星,火星,木星
最も多く使われているプログラミング言語はどれですか?,Java,C++,Python,Ruby,Python
日本の四季の中で最も短い季節は?,春,夏,秋,冬,秋
人間の体温は大体何度ですか?,35度,36度,37度,38度,36度
世界で最も高い山はどれですか?,エベレスト,キリマンジャロ,アコンカグア,マッキンリー,エベレスト
アフリカ大陸で最も広い国はどれですか?,エジプト,ナイジェリア,南アフリカ,アルジェリア,ナイジェリア
0 コメント