まずCSVデータをUTF-8で作成してアプリに設置しました。
wordCsv.csv
A,説明A B,説明B C,説明C C,説明D E,説明E F,説明F G,説明G H,説明H
次にこのCSVデータを取得するスクリプトを作成。
CsvReader.cs
public class CsvReader : MonoBehaviour { public static List<string[]> csvDatas = new List<string[]>(); // Use this for initialization void Start () { CsvRead("Csv/wordcsv"); } //CSVからDataを取得する public void CsvRead(string csvName){ TextAsset csv = Resources.Load(csvName) as TextAsset; StringReader reader = new StringReader(csv.text); while(reader.Peek() > -1){ string line = reader.ReadLine(); csvDatas.Add(line.Split(',')); } } }
次に取得したCSVデータの1列目をボタンに表示するためのスクリプトを作成してボタンXのOnclick属性に設置。
(実際はボタンXは複数ありwordFlagで区分けしています)
OnClickScript.cs
public class OnClickScript : MonoBehaviour { public static int wordFlag; public Text wordButton1; public Text wordButton2; public Text wordButton3; public Text wordButton4; public Text wordButton5; public void OnclickButton(int wordNum){ wordFlag = wordNum; Debug.Log("wordFlag:" + wordFlag); cateButtons.SetActive(false); wordButtons.SetActive(true); switch(wordFlag) { case 0: wordButton1.text = CsvReader.csvDatas[0][0]; wordButton2.text = CsvReader.csvDatas[1][0]; wordButton3.text = CsvReader.csvDatas[2][0]; wordButton4.text = CsvReader.csvDatas[3][0]; break; case 1: wordButton1.text = CsvReader.csvDatas[12][0]; wordButton2.text = CsvReader.csvDatas[13][0]; wordButton3.text = CsvReader.csvDatas[14][0]; wordButton4.text = CsvReader.csvDatas[15][0]; ....... break; default: break; }
ボタンXをクリックしたらボタンA~Hが表示されました。(ここまではOK)
この生成されたA~Hボタンの押した時にこの表示されている文字(AボタンならA)をDebug.Logで表示したいです。
OnClickScript3.cs
public class OnClickScript3 : MonoBehaviour { private Text confirData2; public void OnclickButton(int wordNum){ switch(wordNum){ case 0: confirData2 = this.GetComponentInChildren<Text>(); Debug.Log("confirData2:" + confirData2); break; } } }
上記のスクリプトを作成してA(E)にアタッチして
OnClick属性を設定して
実行してAボタンをクリックしました。
Debug.Logで表示されてほしい内容は「confirData2:A」なのですが
実際に表示される内容は「confirData2:Text(UnityEngine.UI.Text)」になってしまいます。
どうすれば希望通りになるのでしょうか?
環境)
PC: mac
Unity2018.2
言語:C#
回答2件
あなたの回答
tips
プレビュー