前提・実現したいこと
Unityでテキストを一文字ずつゲーム画面に設置したテキストボックスに表示するシステムを作っています。
また、ただ一文字ずつ表示するのではなく、(読点)や。(句点)または任意のタイミングで表示を中断、再開させるように設計しています。
一文字ずつ表示する分には問題ないのですが、任意のタイミングで中断、再開させるようにすると以下のような問題が発生しました。
発生している問題
-表示しようとした文章- あいうえ、お。かきく、けこ。さしす、せ、そ。 -表示された文章- あいうえ、お。かきく、けこ
該当のソースコード
C#
1 // string text_check = "あいうえ、お。かきく、けこ。さしす、せ、そ。"; 2 //StartCoroutine("TextWrite1", text_check); 3 4 IEnumerator TextWrite1(string text) 5 { 6 7 view.Text.text = ""; 8 float stop_Time = 0.5f; //読点や句点で止める時間 9 float char_speed = 0.05f; //通常の文字送りスピード 10 11 var wait = new WaitForSeconds(stop_Time); 12 var defspeed = new WaitForSeconds(char_speed); 13 14 for (int i = 0; i < text.Length; i++) 15 { 16 17 view.Text.text += text[i]; 18 Debug.Log(text[i]); 19 20 if (text[i].Equals('、') || text[i].Equals('。')) 21 { 22 23 yield return wait; 24 } 25 else 26 { 27 yield return defspeed; 28 } 29 } 30 }
試したこと
- 句点、読点無しであれば問題なく表示される。
- stop_Timeを小さくしていくと表示される文章が多くなる。
- for文に入る前に元の文章をDebug.Logで表示するときちんと全て表示される。
- for文内で一文字ずつDebug.Logで表示すると、想定通り遅れて表示される。
- InspectorウィンドウでText内の文字を確認すると、text_checkの文字は想定通り遅れてすべて反映されている。
要するにテキストボックスにのみ問題が起きています。
最後に
”テキストを一文字ずつ表示する”システムはウェブ上にありましたが、
”任意のタイミング”で中断、再開させるものが無かったので質問させて頂きました。
任意のタイミングでテキストの表示を中断、再開するかつ全文表示できるようにしたいです。
上記に想定しているシステムを他のやり方でできるという方がいましたら併せてお願いします。
是非、回答よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/21 11:34
2021/08/21 12:34