示例#1
0
        IEnumerator StepMessage(EventData data)
        {
            int messageCount = 0; //現在表示中の文字数

            currentText   = "";
            isStepRunning = true;
            float progress = 0f;

            //一文字ずつ表示する場合はタグがあると、おかしくなるため一時的にタグ除去を行う
            var stripped = StringChecker.StripHTMLTags(currentMessages[0]);

            while (stripped.Length > messageCount)//文字をすべて表示していない場合ループ
            {
                while (isPaused)
                {
                    yield return(null);
                }

                currentText += stripped[messageCount]; //一文字追加
                messageCount++;                        //現在の文字数
                progress = (float)messageCount / stripped.Length;

                if (progress == 1f)
                {
                    //最後まで読んだらタグ除去を解除する
                    currentText = currentMessages[0];
                    //選択式の場合は選択文も文字列に追加する
                    if (data.scenarioType == ScenarioType.Select)
                    {
                        currentText += "\r\n";
                        for (int i = 1; i < currentMessages.Length; i++)
                        {
                            currentText += $"{i}:{currentMessages[i]} ";
                        }
                    }
                }

                OnMessageUpdate?.Invoke(data, currentText, progress);

                if (skipStep)
                {
                    messageCount = stripped.Length - 1;
                    skipStep     = false;
                    yield return(null);
                }
                else
                {
                    yield return(new WaitForSeconds(stepSpeed));//任意の時間待つ
                }
            }
            isStepRunning = false;
        }
示例#2
0
        private bool audioVaild(string text)
        {
            var last = text.Substring(text.Length - 1);

            return(StringChecker.isNormalString(last));
        }