実現したいこと
UnityでCSVから取得したテキストをボタンに上にテキストとして表示させたいのですがBuildしても表示されなくて困っています。ボタンの遷移自体は正常に動作します。どの点が間違っているのか教えていただけると幸いです。
発生している問題・エラーメッセージ
実行中のエラーに以下のものが出ています
NullReferenceException: Object reference not set to an instance of an object CSVReader_Lv1.CSVReader_Lv1() (at Assets/CSVReader_Lv1.cs:26)
CSVReader_Lv1.Init() (at Assets/CSVReader_Lv1.cs:44)
QuizController_Lv1.Start()(at Assets/QuizController_Lv1.cs:20)
該当のソースコード
CSVReader_Lv1.cs
1using System; 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5using System.IO; 6using UnityEngine.UI; 7using UnityEngine.SceneManagement; 8using System.Linq; 9 10public class CSVReader_Lv1 11{ 12 static TextAsset csvFile;//CSVファイルを変数として扱うために宣言 13 static List<string[]> QuizData = new List<string[]>();//CSVファイルの中身を入れる配列を定義。 14 //変数名[i]がエネミーIDがiの情報をそれぞれ示す 15 public string[] Question = new string[100];//クイズの問題 16 public string[] Correct = new string[100];//クイズの正解 17 public string[] Wrong = new string[100];//クイズの不正解 18 static int[] Order1 = null; //出題数を管理するメンバ変数 19 public static int[] Order2; //出題をランダムにするメンバ変数 20 //QuizData[i][j]はCSVファイルのi行、j列目のデータを表す。但し先頭行(タイトル部分)は0行目と考えるものとする。 21 static void CsvReader_Lv1() 22 { 23 csvFile = Resources.Load("QuizLevel1") as TextAsset; 24 StringReader reader = new StringReader(csvFile.text);// 25 while (reader.Peek() != -1) 26 { 27 string line = reader.ReadLine(); 28 QuizData.Add(line.Split(',')); 29 } 30 Order1 = new int[QuizData.Count]; 31 for (int i = 0; i < QuizData.Count - 1; i++) 32 { 33 Order1[i] = i; 34 } 35 Order2 = Order1.OrderBy(i => Guid.NewGuid()).ToArray(); 36 } 37 38 public void Init() 39 { 40 CsvReader_Lv1(); 41 for (int i = 1; i < QuizData.Count; i++) 42 { 43 Question[i] = QuizData[i][0]; 44 Correct[i] = QuizData[i][1]; 45 Wrong[i] = QuizData[i][2]; 46 } 47 } 48}
QuizController_Lv1.cs
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using UnityEngine.SceneManagement; 6 7public class QuizController_Lv1 : MonoBehaviour 8{ 9 [SerializeField] Button QuestionButton = null; 10 [SerializeField] Button CorrectButton = null; 11 [SerializeField] Button WrongButton = null; 12 13 private CSVReader_Lv1 QuizInfo; 14 public AudioClip CorrectSound; 15 public AudioClip WrongSound; 16 17 private void Start() 18 { 19 QuizInfo = new CSVReader_Lv1(); 20 QuizInfo.Init(); 21 QuestionButton.GetComponentInChildren<Text>().text = QuizInfo.Question[1]; 22 CorrectButton.GetComponentInChildren<Text>().text = QuizInfo.Correct[1]; 23 WrongButton.GetComponentInChildren<Text>().text = QuizInfo.Wrong[1]; 24 } 25 26 public void ClickCorrectButton() 27 { 28 //audioSource.PlayOneShot(CorrectSound); 29 SceneManager.LoadScene("Stage1-2"); 30 } 31 32 public void ClickWrongButton() 33 { 34 //audioSource.PlayOneShot(WrongSound); 35 SceneManager.LoadScene("Stage1-2"); 36 } 37}
QuizLevel1.csv
1列目:Quiz
2列目:Correct
3列目:Wrong
補足情報
バージョン:Unity 2021.3.2f1
回答2件
あなたの回答
tips
プレビュー