質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

1311閲覧

UnityでCSVから取得したテキストをボタンに表示させたい

BirdWatcher

総合スコア20

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2022/07/24 04:05

編集2022/07/25 01:30

実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2022/07/24 04:18

現状はどうなっていて、それをどうしたいんでしょうか
BirdWatcher

2022/07/24 05:39

CSVから取得したもの(以下の例)をボタン上にテキストとして表示させたいのですがBuildしても表示されないという状況です。原因を教えていただけると幸いです。 CSVの内容 1列目(Quiz):密度が低いのは? 2列目(Correct):氷 3列目:Wrong:水
RiaFeed

2022/07/24 05:51

Buttonの変数3つともGetComponentしてなくてnullのままっぽいから表示されないどころか例外出てるはずだけど・・・?
y_waiwai

2022/07/24 05:56

現状はどうなるんでしょうか
BirdWatcher

2022/07/24 06:03

現状はUIのボタンがあり、ボタンをクリックすると画面の遷移はするのですがテキストは何も表示されないという状況です。エラーはありません。
fiveHundred

2022/07/24 07:44

「Text (TMP)」とあるので、本来のUI(UnityEngine.UI)ではなく「TextMeshPro」を使ってしまっているのではないかと思います。 また、「エラーはありません」ということですが、とてもそうとは思えません。 エラーは全て、Consoleウィンドウに表示されるので、本当に無いのか確認してください。 null例外など、実行中にエラーが出る場合もあります。
BirdWatcher

2022/07/24 08:25

ありがとうございます。 実行中のエラーを確認してみたところ、以下のエラーが出ていました。対処法を調べてみたのですが初心者のためよくわかりませんでした。どの点を修正すればよろしいでしょうか 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)
guest

回答2

0

自己解決

ButtonのTextをTextMeshProからLegacyにしたところ直りました。

投稿2022/07/29 00:33

BirdWatcher

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ファイル名がQuizLevel.csvと書かれていますが、ソースコードではQuizLevel1となっていますので、ファイル名が一致しているか確認してみてください。

cs

1csvFile = Resources.Load("QuizLevel1") as TextAsset;

投稿2022/07/24 09:27

KomoriGameDev

総合スコア433

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BirdWatcher

2022/07/24 09:31

その点に関しては入力ミスです、訂正しました。 申し訳ないです。
KomoriGameDev

2022/07/25 04:32

添付画像を見ました。Resourcesフォルダが見当たらないのですが、csvファイルはどこにあるんでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問