IEnumerator ShowPara() { StoryPara para = currentStory[currentPara]; if (!para.IsTag) { storyBoard.AddText(para.x, para.y); currentChar = 0; float time = 0f; float efxTime = 0f; bool isSpeedUp = false; while (currentChar < para.Length) { yield return(null); if (STBInput.GetButtonDown("Next")) { isSpeedUp = true; } if (STBInput.GetButtonUp("Next")) { isSpeedUp = false; } if (STBInput.GetButton("Skip")) { currentChar = para.Length - 1; } time += Time.deltaTime * (isSpeedUp ? 5f : 1f); efxTime += Time.deltaTime; if (time > TEXT_GAP) { currentChar++; if (efxTime >= TEXT_GAP) { SoundManager.instance.PlayUiEfx(UiEfx.TEXT); while (efxTime >= TEXT_GAP) { efxTime -= TEXT_GAP; } } storyBoard.SetText(para.Substring(currentChar)); if (para.GetChar(currentChar - 1).Equals('\n')) { time -= TEXT_GAP * 5f; } else { time -= TEXT_GAP; } } } isParaOver = true; paraEndMark.Set(GetActPos(storyBoard.GetEndPosition())); currentPara++; para = currentStory[currentPara]; } if (para.IsTag) { currentPara++; if (para.IsBgmPlay) { SoundManager.instance.PlayBgm(bgm, 2f); } if (para.IsBgmStop) { SoundManager.instance.StopBgm(1f); } if (para.IsPageEnd) { paraEndMark.Hide(); pageEndMark.Set(); isPageOver = true; yield break; } if (para.IsClipEnd) { OnSceneEnd(); yield break; } if (!isParaOver) { StartCoroutine(ShowPara()); } } }