a
unknown
c_cpp
3 years ago
2.8 kB
10
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...