public IEnumerator Write() { yield return(new WaitForSeconds(waitAtTheStart)); foreach (var key in sentenceKeys) { wobblyText.ResetIndexs(); shakeText.ResetIndexs(); jellyText.ResetIndexs(); writerText.text = ""; if (!playSoundEachLetter && playSound) { AudioManager.Instance.PlayClip(soundName); } string sentence = ""; if (MultiLang.GetTranslation(key) != null) { sentence = MultiLang.GetTranslation(key); } else { sentence = key; } List <string> tags = new List <string>(); string tagName = ""; bool tag = false; int wobblyStartIndex = 0; int shakeStartIndex = 0; int jellyStartIndex = 0; for (int i = 0; i < sentence.Length; i++) { char letter = sentence[i]; string letterStr = letter.ToString(); if (tag) { tagName += letter; if (letter == '>') { tag = false; tags.Add(tagName); if (tagName.Contains("wobbly")) { int sumLen = 0; foreach (var item in tags) { sumLen += item.Length; } int lenOffset = i - sumLen + 1; if (!tagName.Contains("/")) { wobblyText.AddStartIndex(lenOffset); wobblyStartIndex = lenOffset; } else { wobblyText.AddEndIndex(wobblyStartIndex, lenOffset); wobblyStartIndex = 0; } } else if (tagName.Contains("shake")) { int sumLen = 0; foreach (var item in tags) { sumLen += item.Length; } int lenOffset = i - sumLen + 1; if (!tagName.Contains("/")) { shakeText.AddStartIndex(lenOffset); shakeStartIndex = lenOffset; } else { shakeText.AddEndIndex(shakeStartIndex, lenOffset); shakeStartIndex = 0; } } else if (tagName.Contains("jelly")) { int sumLen = 0; foreach (var item in tags) { sumLen += item.Length; } int lenOffset = i - sumLen + 1; if (!tagName.Contains("/")) { jellyText.AddStartIndex(lenOffset); jellyStartIndex = lenOffset; } else { jellyText.AddEndIndex(jellyStartIndex, lenOffset); jellyStartIndex = 0; } } else { writerText.text += tagName; } tagName = ""; } } else { if (letter == '<') { tag = true; tagName += letter; } else { if (playSoundEachLetter && playSound) { AudioManager.Instance.PlayClipWithRandomPitch(soundName, minPitch, maxPitch); } writerText.text += letter; if (letter.ToString().IndexOfAny(stopperChars) != -1) { yield return(new WaitForSeconds(waitBetweenLetters * 3)); } yield return(new WaitForSeconds(waitBetweenLetters)); } } } resume.SetActive(true); yield return(new WaitUntil(() => Input.GetKeyDown(KeyCode.Space))); resume.SetActive(false); } resume.SetActive(true); yield return(new WaitUntil(() => Input.GetKeyDown(KeyCode.Space))); resume.SetActive(false); if (playEvent) { AfterEvent.Invoke(); } }
private void Start() { GetComponent <Text>().text = MultiLang.GetTranslation(key); }