現在Unity3Dで数学のゲームを作っています。質問は2つあります。
迫ってくる壁にテキストを表示させたく、Text、TextMesh、TextMeshProを試したところ、TextMeshPro が一番きれいに表示されるため、これで制作を進めることにしました。
壁を3つ用意し、それぞれがTextMeshProを子に持って、そのテキストをスクリプトで制御したいです。
(質問1)
テキストの内容をスクリプトで変えようとすると、Start関数、Update関数ではちゃんと変わるのですが、ほかの関数では上手く表示されませんでした。
TextMeshProはStart関数かUpdate関数でしか、スクリプトからテキスト内容をコントロールできないのでしょうか?
(質問2)
TextMeshPro複数個を1つの配列に入れ、配列から取り出してテキストを変えようとすると上手くいきませんでした。(Start関数、Update関数でも上手くいきませんでした)
TextMeshProは配列の中に入れて扱えないのでしょうか?
どうぞよろしくお願いします。
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using TMPro; 5 6public class QuesGenerator : MonoBehaviour 7{ 8 public GameObject Answer1; 9 public GameObject Answer2; 10 public GameObject Answer3; 11 12 public TextMeshPro ans1; 13 public TextMeshPro ans2; 14 public TextMeshPro ans3; 15 16 string[] ad; 17 string[] ques; 18 string[] ans; 19 20 void Start() 21 { 22 CsvLoad(); 23 } 24 25 void Update() 26 { 27 28 } 29 30 void LateUpdate() 31 { 32 //QuestionLoad(); 33 } 34 35 void CsvLoad() 36 { 37 TextAsset adTextFile = Resources.Load("text/sample", typeof(TextAsset)) as TextAsset; 38 ad = adTextFile.text.Split("\n"[0]); 39 40 ques = new string[ad.Length]; 41 ans = new string[ad.Length]; 42 43 for (int i = 0; i < ad.Length; i++) 44 { 45 ques[i] = ad[i].Split(","[0])[0]; 46 ans[i] = ad[i].Split(","[0])[1]; 47 } 48 } 49 50 public void QuestionLoad() 51 { 52 int rnd = Random.Range(1, 101); 53 int k = Random.Range(0, 3); 54 55 if (rnd == 1) 56 { 57 rnd++; 58 //Ques.text = ques[rnd]; 59 ans1.text = ans[rnd + 2]; 60 ans2.text = ans[rnd]; 61 ans3.text = ans[rnd + 1]; 62 63 //A = ans[rnd]; 64 } 65 else if (rnd == 100) 66 { 67 rnd--; 68 //Ques.text = ques[rnd]; 69 ans1.text = ans[rnd - 3]; 70 ans2.text = ans[rnd - 2]; 71 ans3.text = ans[rnd - 1]; 72 73 //A = ans[rnd]; 74 } 75 else 76 { 77 //Ques.text = ques[rnd]; 78 ans1.text = ans[rnd - 1]; 79 ans2.text = ans[rnd]; 80 ans3.text = ans[rnd + 1]; 81 82 //A = ans[rnd]; 83 } 84 } 85}
試したこと
配列の中にTextMeshProを入れ、
answers_Text[0].text = ans[rand];
の様に指定しても、テキストは変わりませんでした。
補足情報
バージョンはUnity2019.3.9f1です。
csvファイルは、102行2列のテキストです(問題を100問用意したため)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/29 12:45
2020/05/29 16:13 編集
2020/05/29 16:28 編集
2020/05/30 13:26