Ikal Esteban Fernández Galván
Dialog se escribe dialogue
Gaston Scattarella
Se puede escribir de las 2 maneras
Implementa un sistema de diálogo de NPC en Unity de forma simple y efectiva: una Dialogue Zone con Box Collider 2D en modo trigger, un script en C# que escucha la tecla Intro, y un Dialogue Manager que muestra el texto. Con esta estructura, cualquier personaje puede iniciar conversaciones claras y controladas por el jugador.
¿Cómo implementar el diálogo de un NPC en Unity?
Para iniciar conversaciones de forma consistente, se prepara una zona alrededor del NPC y un script que detecta cuándo el jugador decide hablar. El flujo es directo: el jugador entra en la zona, pulsa la tecla, y el Dialogue Manager muestra la línea configurada.
¿Cómo crear la Dialogue Zone y configurar el collider?
¿Qué hace el script NPC Dialogue en C#?
using UnityEngine; public class NPCDialogue : MonoBehaviour { public string dialogue; // línea que dirá el NPC private DialogueManager manager; // referencia al gestor de diálogos private bool playerInTheZone; // estado de jugador en zona void Start() { manager = FindObjectOfType<DialogueManager>(); } void OnTriggerEnter2D(Collider2D other) { if (other.gameObject.CompareTag("Player")) { playerInTheZone = true; } } void Update() { if (playerInTheZone && Input.GetKeyDown(KeyCode.Return)) { manager.ShowDialogue(dialogue); } } }
¿Cómo iniciar y mostrar el diálogo con la tecla Intro?
El inicio se basa en dos condiciones: que el jugador esté dentro de la Dialogue Zone y que presione la tecla Intro. Cuando ambas se cumplen, el Dialogue Manager recibe la cadena y la muestra en la caja de diálogo.
¿Cómo gestionar la UI del diálogo con el Dialogue Manager?
¿Qué buenas prácticas y extensiones se sugieren?
Para extender y mantener el sistema, conviene estructurar el NPC con zonas especializadas y aprovechar un gestor único para la UI de diálogos.
¿Te gustaría ampliar este sistema con múltiples líneas o condiciones especiales por NPC? Cuéntame en los comentarios qué interacción te interesa construir y cómo te gustaría que respondiera el Dialogue Manager.
Ikal Esteban Fernández Galván
Dialog se escribe dialogue
Gaston Scattarella
Se puede escribir de las 2 maneras
Wandy Rafael Santana Evangelista
Aquí el código lindo😄:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class NPCDialog : MonoBehaviour { /**** Variables. ****/ public string dialog; private DialogManager manager; private bool playerInTheZone; // Start is called before the first frame update void Start() { manager = FindObjectOfType<DialogManager>(); } // Update is called once per frame void Update() { if (playerInTheZone && Input.GetKeyDown(KeyCode.Return)) { manager.ShowDialog(dialog); } } private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.tag.Equals("Player")) { playerInTheZone = true; } } }