Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5.  
  6. public class DialogManager : MonoBehaviour
  7. {
  8. public static DialogManager instance;
  9. // UI-Referenssit
  10. public GameObject dialogBox;
  11. public Text nameText;
  12. public GameObject nameBox;
  13. public Text dialogText;
  14.  
  15. // Dialogin referenssit
  16. private string[] dialogLines;
  17. private int currentLine = 0;
  18. private bool justStarted;
  19. public float typingSpeed; // Kirjoitus nopeus
  20. private bool IsCoroutingRunning; // Onko alirutiini käynnissä
  21. // Start is called before the first frame update
  22. void Start()
  23. {
  24. if (instance == null)
  25. {
  26. instance = this;
  27. }
  28. }
  29.  
  30. // Update is called once per frame
  31. void Update()
  32. {
  33. if (Input.GetButtonUp("Fire2") && !IsCoroutingRunning)
  34. {
  35. //siirrytään seuraavalle riville
  36. currentLine++;
  37. //onko dialogi jo päättynyt?
  38. if (currentLine >= dialogLines.Length)
  39. {
  40. //dialogi on päättynyt, joten suljetaan dialogi-ikkuna
  41. dialogBox.SetActive(false);
  42.  
  43. //lisäksi informoidaan gamemanageria, että dialogi päättyi (pelihahamo voi taas liikkua)
  44. GameManager.instance.dialogActive = false;
  45. }
  46. else
  47. {
  48. //dialogi ei ole vielä päättynyt, joten ensiksi selvitetään mahdollinen keskustelija (jos sellainen on)
  49. CheckIfName();
  50.  
  51. //näytetään dialogiteksti
  52. //dialogText.text = dialogLines[currentLine];
  53. StartCoroutine(AutoType(dialogLines, currentLine));
  54. }
  55. }
  56. }
  57. public void ShowDialog(string[] newLines, bool isPerson)
  58. {
  59. // Montako riviä
  60. dialogLines = newLines;
  61. // Eka rivi
  62. currentLine = 0;
  63. // Onko rivi persoona
  64. CheckIfName();
  65. // Dialogin eka rivi
  66. // dialogText.text = dialogLines[currentLine];
  67. StartCoroutine(AutoType(dialogLines, currentLine));
  68. // Avaa dialogi
  69. dialogBox.SetActive(true);
  70. // Kirjoitus alkoi
  71. justStarted = true;
  72. // Aktivoidaan nimi
  73. nameBox.SetActive(isPerson);
  74. // GameManagerille kerrotaan että dialogi on käynnissä.
  75. GameManager.instance.dialogActive = true;
  76. }
  77.  
  78. void CheckIfName()
  79. {
  80. // Alkaako rivi n- GET DOWN MRS. OBAMA
  81. if (dialogLines[currentLine].StartsWith("n-"))
  82. {
  83. // Alkaa
  84. nameText.text = dialogLines[currentLine].Replace("n-", "");
  85. currentLine++;
  86. }
  87. }
  88.  
  89. IEnumerator AutoType(string[] newLInes, int currentLine)
  90. {
  91. dialogText.text = "";
  92. IsCoroutingRunning = true;
  93. foreach (char letter in newLInes[currentLine].ToCharArray())
  94. {
  95. dialogText.text += letter;
  96. yield return new WaitForSeconds(typingSpeed);
  97. }
  98. IsCoroutingRunning = false;
  99.  
  100. }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement