Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

178
Visualizações
No se muestra el botón Continuar incluso después de que el Diálogo se realiza en Unity

No quiero que el jugador envíe correo no deseado al botón continuar, por lo tanto, solo quiero que aparezca después de que finalice el diálogo.

Funciona en el primer índice pero para el siguiente elemento no aparece el botón continuar. Aquí está mi código:

 using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; public class DialogueSE : MonoBehaviour { public TextMeshProUGUI textDisplaySE; public string[] sentencesSE; private int index; public float typingSpeedSE; public GameObject continueButtonSE; void Start() { StartCoroutine(Type()); } void Update() { if(textDisplaySE.text == sentencesSE[index]) { continueButtonSE.SetActive(true); } } IEnumerator Type() { foreach (char letter in sentencesSE[index].ToCharArray()) { textDisplaySE.text += letter; yield return new WaitForSeconds(typingSpeedSE); } } public void NextSentenceSE() { continueButtonSE.SetActive(false); if (index < sentencesSE.Length - 1) { index++; textDisplaySE.text = " "; StartCoroutine(Type()); } else { textDisplaySE.text = " "; continueButtonSE.SetActive(false); } } }

He deshabilitado el botón de continuar SE desde el principio para que solo pueda aparecer una vez que las oraciones SE [índice] hayan terminado de aparecer.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Está anteponiendo un espacio cuando dice textDisplaySE.text = " "; y luego agrega cosas en la corrutina, por lo tanto if(textDisplaySE.text == sentencesSE[index]) nunca es cierto porque en el segundo caso, textDisplaySE.text es en realidad [space]test2 en lugar de solo test2 , que es lo que sentenciasSE [índice] .

En la línea 31, en cambio, puede inicializar a textDisplaySE.text = string.Empty; para no tener ningún espacio en blanco.

over 4 years ago · Santiago Trujillo Relatório

0

Además de la explicación de su problema de esta respuesta

¿Por qué necesita el cheque en absoluto?

Simplemente puede dejar que su Coroutine maneje el final de la escritura y habilitar el botón continuar como, por ejemplo

 IEnumerator Type() { foreach (char letter in sentencesSE[index].ToCharArray()) { textDisplaySE.text += letter; yield return new WaitForSeconds(typingSpeedSE); } if (index < sentencesSE.Length - 1) { continueButtonSE.SetActive(true); } } public void NextSentenceSE() { continueButtonSE.SetActive(false); if (index < sentencesSE.Length - 1) { index++; textDisplaySE.text = ""; StartCoroutine(Type()); } else { textDisplaySE.text = ""; Debug.Log("Reached end of dialog"); } }

De esta manera, no necesita el método de Update y la comparación de cadenas en absoluto y ni siquiera entraría en el problema con el carácter de espacio antepuesto;)

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda