今、Unityで会話シーンの実装をしているのですが
C#
1/// <summary> 会話中に表示するキャラクター </summary> 2 [SerializeField] private Image character; 3 /// <summary> キャラクターを切り替えるSprite </summary> 4 private Sprite[] sprite; 5 /// <summary> MessageWindowのText </summary> 6 [SerializeField] Text converText; 7 /// <summary> CSVから読み込んだTextを格納 </summary> 8 private List<string> scenariosData = new List<string>(); 9 /// <summary> CSVから読み込んだTextの値を格納 </summary> 10 private List<int> charNum = new List<int>(); 11 /// <summary> 文字ごとに表示する速度 </summary> 12 private float converSpeed = 0.1f; 13 /// <summary> 表示中の会話文 </summary> 14 private int converListIndex = 0; 15 /// <summary> 表示中の文字 </summary> 16 private int converCount = 0; 17 /// <summary> 文字スキップのフラグ </summary> 18 private bool isSkip = false; 19 20 private void Start() 21 { 22 sprite = Resources.LoadAll<Sprite>("Character"); 23 character = this.GetComponent<Image>(); 24 LoadCSV(); 25 StartCoroutine(ConversationSending()); 26 } 27 28 private void Update() 29 { 30 //if (Input.GetMouseButtonDown(0) && isSkip) 31 //{ 32 // converCount = scenariosData[converListIndex].Length; 33 //} 34 CharacterChange(); 35 } 36 37 private IEnumerator ConversationSending() 38 { 39 while (converListIndex < scenariosData.Count) 40 { 41 converText.text = string.Empty; 42 converCount = 0; 43 44 while (converCount < scenariosData[converListIndex].Length) 45 { 46 isSkip = true; 47 converText.text += scenariosData[converListIndex].Replace("\n", "\n")[converCount]; 48 yield return new WaitForSeconds(converSpeed); 49 converCount++; 50 } 51 52 isSkip = false; 53 converListIndex++; 54 yield return new WaitUntil(() => Input.GetMouseButtonDown(0)); 55 //StartCoroutine(ConversationSending()); 56 } 57 } 58 59 private void LoadCSV() 60 { 61 TextAsset csv = Resources.Load<TextAsset>("CSV/Scenarios"); 62 StringReader reader = new StringReader(csv.text); 63 64 int i = 0; 65 while (reader.Peek() > -1) 66 { 67 string scenarios = reader.ReadLine(); 68 string[] values = scenarios.Split(','); 69 70 for (int j = 0; j < values.Length - 1; j++) 71 { 72 scenariosData.Add(values[0]); 73 charNum.Add(int.Parse(values[1])); 74 //Debug.Log(scenariosData[i] + "," + charNum[i]); 75 //Debug.Log(values[i]); 76 } 77 i++; 78 } 79 }
一つ目の要素の会話文が終わると
converText.text += scenariosData[converListIndex].Replace("\n", "\n")[converCount];
の所でIndexOutOfRangeException:index was outside the bounds of the arrayのエラーが出ます。
Addで要素を足していってるので大丈夫だと思うんですけど、なぜなのでしょうか?。
回答お願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/07 01:47