using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class UIManager : MonoBehaviour { public static UIManager instance; public bool openingStatus; public GameObject dialogueBox; public Text characterNameText; public Text dialogueLineText; public GameObject spaceBar; float scrollingSpeed = 0.02f; bool isScrolling; [TextArea(1,3)] public string[] dialogueLines; [SerializeField] int currentLine; private void Awake() { if(instance == null) instance = this; else if(instance != this) Destroy(this); //DontDestroyOnLoad(gameObject); } private void Start() { dialogueLineText.text = dialogueLines[currentLine]; } private void Update() { if(dialogueBox.activeInHierarchy && GameManager.instance.gameMode == GameManager.GameMode.Normal) { if(Input.GetKeyUp("x")) { if(!isScrolling) { currentLine ++; if(currentLine < dialogueLines.Length) { CheckName(); StartCoroutine(ScrollingText()); } else { characterNameText.gameObject.SetActive(true); dialogueBox.SetActive(false); } } else { scrollingSpeed = 0; } } } } public void ToggleDialogueBox(bool value) { dialogueBox.SetActive(value); } public void ToggleSpaceBar(bool value) { spaceBar.SetActive(value); } public void SetupDialogue(string name, string dialogue, int size) { characterNameText.text = name; dialogueLineText.fontSize = size; StartCoroutine(ScrollingCGText(dialogue)); ToggleDialogueBox(true); } public void ShowDialogue(string[] currentDialogueLines, bool hasName = true) { characterNameText.gameObject.SetActive(hasName); currentLine = 0; dialogueLines = currentDialogueLines; CheckName(); dialogueBox.SetActive(true); StartCoroutine(ScrollingText()); } void CheckName() { if(dialogueLines[currentLine].StartsWith("n-")) { characterNameText.text = dialogueLines[currentLine].Replace("n-",""); currentLine++; } } IEnumerator ScrollingText() { isScrolling = true; dialogueLineText.text = ""; char[] text = dialogueLines[currentLine].ToCharArray(); foreach(char letter in text) { dialogueLineText.text += letter; yield return new WaitForSeconds(scrollingSpeed); } isScrolling = false; scrollingSpeed = 0.02f; } IEnumerator ScrollingCGText(string dialogue) { dialogueLineText.text = ""; char[] text = dialogue.ToCharArray(); foreach(char letter in text) { dialogueLineText.text += letter; yield return new WaitForSeconds(scrollingSpeed); } } }