Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

¿Mejor método para un sistema de diálogo?

Iniciado por B-£otus, Julio 30, 2018, 05:13:00 AM

Tema anterior - Siguiente tema
¡Buenas! Estoy empezando a crear un sistema de diálogo, y por ahora me limito a hacer pruebas, y se me ocurrieron dos ideas.
 
Extraer el texto de un .txt
 
Crear un txt que siguiera ciertas reglas e ir sacando el texto de el.
 
Esta me agrada para editar más fácilmente el texto, traducir rápidamente y cosas similares, pero es más liosa.
 
Por ejemplo:
 

@texto1
{
    [Juan]
    Hay algo que no me gusta.
}
@texto2
{
    [Pedro]
    X2.
}

 
Un método que recibe un string como parámetro.
 
Usar un string para mostrar en el TextBox.
 
Por ejemplo:
 

void MsgBox(string text)
{
instrucciones;
}

 
¿Cuál creen que es la mejor forma de hacerlo?

Cita de: ¥-Shido date=1532920380¿Cuál creen que es la mejor forma de hacerlo?
   


Falta más info para contestar eso, sobretodo de la segunda, ya que ese método por si solo no dice nada, no se.
 
Explicá paso a paso como creas un dialogo (está en tu cabeza o en la cabeza de algun guionista tuyo y termina parando en una string de C# por ejemplo) y como lo mostras (no es relevante pero si querés) y te vas a dar cuenta qué método es mejor.
 
 

las conversaciones pueden variar? se pueden escoger opciones de dialogo?
 
en realidad he tocado poco los dialogos.... pero creo que hace falta un poco mas de informacion para que te puedan ayudar...

Para reiterar el título de este hilo, ¿cuál es la mejor manera de crear un sistema de diálogo? No estoy buscando nada sofisticado con una tonelada de personalización. Solo quiero saber la mejor forma de estructurar el clásico diálogo RPG. 

Este estilo generalmente consiste en una imagen para cada personaje participante, opciones de Diálogo que pueden ramificarse en diferentes segmentos de diálogo y un sonido que se reproduce cada vez que un personaje comienza a hablar (generalmente un sonido "jadeo" o "huh" para reaccionar a los personajes anteriores). 
Ejemplo:
 

 
Realmente quiero separar el código y el diálogo.
 
Quiero tener un conjunto de conversaciones que cualquier personaje en el juego pueda retomar. Estaba pensando que tiene sentido almacenar estas conversaciones en JSON o ScriptableObjects.
 
Por eso me preguntaba: ¿Es mejor usar Json o ScriptableObjects?
 
PD: Solo quiero usarlos para leer los datos almacenados en estos, no guardar datos.

@B-£otus
 
Lo que yo te recomendaría seria hacer un array de string o Text y que fueras leyendo uno a uno  cada numero de la lista  cuando llegue al final salga de ciclo.
 

if(AuxNum >= arraytexto.lengt )
{
//sal del ciclo
AuxNum = 0;
}
else  if( input.botton.space &&  condición activador de texto == true)
{
text.text = arraytexto[AuxNum];
auxNum++;
}

 
Recomendación usa el método ienumerator es tu mejor amigo.

Agosto 01, 2018, 02:23:48 AM #5 Ultima modificación: Agosto 01, 2018, 02:24:03 AM por B-£otus
Cita de: Ness date=1533082027@B-£otus
   
   
      Lo que yo te recomendaría seria hacer un array de string o Text y que fueras leyendo uno a uno  cada numero de la lista  cuando llegue al final salga de ciclo.
   
   

if(AuxNum >= arraytexto.lengt )
{
//sal del ciclo
AuxNum = 0;
}
else  if( input.botton.space &&  condición activador de texto == true)
{
text.text = arraytexto[AuxNum];
auxNum++;
}

   
      Recomendación usa el método ienumerator es tu mejor amigo.
   


Si, así lo estoy haciendo xD
 
Mi duda es: ¿Almacenar esas strings en Json o ScriptableObject?

todo eso depende de que díalogos quieres hacer, tienen diferentas respuestas? es una conversación lineal?

aunque sea lineal, por ahora, mas adelante puede que quieras poner diferentes respuestas, mejor programar eso una sola vez,
 
hacerlo "complicado" te quita mucho trabajo a la larga.
 
puedes usar json, o guardar en binario, eso depende de lo que quieras hacer.
 
multilenguaje? mejor piensa todo bien al principio antes de ponerte a programar a lo loco xd
 
pd: puedes "extraer" el díalogo del código, lo mas utilizado en estos casos es poner los díalogos en XML con sus etiquetas puedes hacer las diferentes respues y facilitas el trabajo de traducción

Tengo Una duda, Como realizo el efecto que tienen los sistemas de dialogos que las letras aparecen una por una con cierto efecto, en el mismo dialogo Como en este gif, se me ocurrio que podia usar ciclo for pero no estoy seguro del rendimiento (no encontre otro gif que representara mi duda) [Advertencia Spoilers de Undertale]
 
https://pa1.narvii.com/6219/445e6b4006db613a14c249756c3c430517305aab_hq.gif

Cita de: Marlos date=1533515321Tengo Una duda, Como realizo el efecto que tienen los sistemas de dialogos que las letras aparecen una por una con cierto efecto, en el mismo dialogo Como en este gif, se me ocurrio que podia usar ciclo for pero no estoy seguro del rendimiento (no encontre otro gif que representara mi duda) [Advertencia Spoilers de Undertale]
   
   
      https://pa1.narvii.com/6219/445e6b4006db613a14c249756c3c430517305aab_hq.gif
   


Se hace con corrutinas.
 
Ejemplo:
 

IEnumerator AnimarTexto(string textoCompleto)
    {
        int i = 0;
        text.text = "";
        while (i < textoCompleto.Length)
        {
            text.text += textoCompleto[i++];
            yield return new WaitForSeconds(0.02F); //Tiempo de espera entre letras.
        }
    }

 
Para iniciarla:
 

StartCoroutine(AnimarTexto(texto));

 
 

Cita de: B-£otus date=1533517339Se hace con corrutinas.
   
   
      Ejemplo:
   
   

IEnumerator AnimarTexto(string textoCompleto)
    {
        int i = 0;
        text.text = "";
        while (i < textoCompleto.Length)
        {
            text.text += textoCompleto[i++];
            yield return new WaitForSeconds(0.02F); //Tiempo de espera entre letras.
        }
    }

   
      Para iniciarla:
   
   

StartCoroutine(AnimarTexto(texto));

   
       
   


Gracias

Tengo otra duda que llevo tiempo sin saber qué hacer: cómo hacer una conversación, si suena estupido, pero me refiero a como hacer una conversación multidireccional, ya que lo que he hecho hasta ahora es que cada vez que el jugador se acerque, el NPC empieza a hablar y al presionar espacio continua (como es normal) pero mi duda es como hago para que hable el personaje después que el NPC termine de hablar, Que sea capaz de responder y mantener, por así decirlo una conversación. Disculpen la molestia de ante mano    

Etiquetas: