a
unknown
c_cpp
3 years ago
2.8 kB
8
Indexable
using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; public class DialogoBehaviour : MonoBehaviour { AudioSource audio; [SerializeField] private GameObject thisGAMEOBJECT; [SerializeField] private TextMeshPro componentePRO; [Header("Text Options")] [SerializeField] private string input; [SerializeField] private Color textColor; [SerializeField] private TMP_FontAsset textFont; [Header("Time parameters")] [SerializeField] private float delay; List<string> contenidoInput = new List<string>(); bool destruir = false; bool esperandoRespuesta = false; bool saltarProcedimiento = false; string originalText = ""; [SerializeField] public PlayerBehaviour Player; private void Awake() { originalText = componentePRO.text; } void Start() { audio = GetComponent<AudioSource>(); string[] alphaInput = originalText.Split("\n"); for (int i = 0; alphaInput.Length != i; i++) { contenidoInput.Add(alphaInput[i]); } Player.characterCanMove = false; secuencia(); } void Update() { if (Input.GetKeyDown(KeyCode.Return) && esperandoRespuesta == false) { saltarProcedimiento = true; } } void secuencia() { componentePRO.text = ""; StartCoroutine(procesarInput(contenidoInput[0])); } public IEnumerator procesarInput(string contenido) { char[] charArr = contenido.ToCharArray(); for (int i = 0; i != charArr.Length; i++) { componentePRO.text = componentePRO.text + charArr[i].ToString(); audio.Play(); yield return new WaitForSeconds(delay); if (saltarProcedimiento == true) { componentePRO.text = contenido; i = charArr.Length - 1; } } feedbackPlayer(); } void feedbackPlayer() { bool continuar = false; contenidoInput.RemoveAt(0); if (contenidoInput.Count == 0) { destruir = true; StartCoroutine(cerrarComentario()); } else { continuar = true; StartCoroutine(cerrarComentario(continuar));} } public IEnumerator cerrarComentario(bool continuar = false) { while (!Input.GetKeyDown(KeyCode.Return)) { esperandoRespuesta = true; yield return null; } esperandoRespuesta = false; saltarProcedimiento = false; if (destruir==true) { Player.characterCanMove = true ; thisGAMEOBJECT.SetActive(false); } if (continuar==true) { secuencia(); } } }
Editor is loading...