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; }
private bool audioVaild(string text) { var last = text.Substring(text.Length - 1); return(StringChecker.isNormalString(last)); }