文字列から一文字、一文字に同時ではなく順番に処理をしたい
☆前提
ソースコードのコルーチン内、while文の部分が処理になります。
SetTextには仮として"ありがとう"と打ち込んであります(状況により変わります)
unityのUI、Buttonを使用しています(OnClick()はそのためのものです)
このスクリプトはButtonにアタッチしています
☆このスクリプトで望む動作
Debug.Log("あ")
Debug.Log("と")
によりコンソールに、「あ」と「と」が表示され、Debug.Log("ぎ")はスルーされるようにしたい
なおかつ「あ」と「と」が表示される間にはfloat Speedのタイムラグが欲しい
☆このスクリプトの制限
・SetTextの文字列は全部で何文字になるかは不定、変動する
・while内のif文も50音すべてに対応させ、その他、数字なども処理に追加する予定
・「あ」「と」「ぎ」、文字列「ありがとう」の場合、「ぎ」は存在しないため処理しない
・「り、が、う」など処理に存在しない文字の場合、処理をしない、ラグも発生しない(「あ」の処理後speedの間をおいて「と」の処理)
発生している問題・エラーメッセージ
NullReferenceException: Object reference not set to an instance of an object (wrapper stelemref) object:stelemref (object,intptr,object)
該当のソースコード
C#
1 2 [SerializeField] 3 Text SetText; //処理したい文字列 4 [SerializeField] 5 float Speed; //次の処理までのラグ用 6 7 string STR; 8 string[] arr; 9 int i; 10 int n; 11 12 public void OnClick() //ボタンをクリックしたときに処理 13 { 14 n = 0; //リセット処理 15 i = 0; //リセット処理 16 STR = SetText.text; //STRにSetTextの文字列を代入 17 18 //arr[]string配列にSTRstringから一文字ずつ格納したい 19 //格納後コルーチン内で一文字ずつ処理したい 20 21 22 foreach (char c in STR) //テキストに書かれた文章を一文字ずつ分割して配列にする 23 { 24 //arr[i] = STR[i].ToString; //??? 25 arr[i] = STR.Substring(i); //一文字ずつ格納? 26 i ++; 27 } 28 //Debug.Log(arr); 29 StartCoroutine(Cor());//コルーチンスタート 30 } 31 32 private IEnumerator Cor() //コルーチン 33 { 34 int messageCount = 0; //リセット処理 35 while (STR.Length > messageCount) //テキストに書かれた文字数を超えるまでループ 36 { 37 if(arr[n] == "あ") 38 { 39 Debug.Log("あ"); 40 } 41 if (arr[n] == "と") 42 { 43 Debug.Log("と"); 44 } 45 if (arr[n] == "ぎ") 46 { 47 Debug.Log("ぎ"); 48 } 49 n++; 50 messageCount++; //ループ処理用 51 yield return new WaitForSeconds(Speed); //ループ間のラグ 52 } 53 54 } 55
###~~ 試したこと~~
~~```
//途中でコメントアウトしてますが
arr[i] = STR[i] //としてSTRから一文字ずつ取り出せるかな?と思ったのですが、
//charをstringに変換できませんと表示され
arr[i] = STR[i].ToString//としてstringにしようとしましたが、非デリゲート型stringに変換できないと
arr[i] = STR(i) //これも駄目で、string型から指定の文字数の文字を取り出す方法がわかりませんでした
arr[i] = STR.SubString(i)//これもできているのかわかっていません
//Debug.Log(arr)で確認しようとしましたが、コンソールには上記のエラーしか出ません
### 読み飛ばしていただいても構わない部分 それとありがとうございます 質問を閲覧いただきありがとうございます。 私は初めて配列を使ってスクリプトを組んだのですが、よくわからないところが多くて、 どうにもならず、質問させていただきました。 勝手ながらご教授お願いいたします。 配列を使わない方法などがあればそちらでも構いません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/22 02:58
2020/03/22 21:18
2020/03/22 22:04
2020/03/26 21:01