Buenas, hace tiempo que no comentaba. Les comento:
Estoy comenzando a implementar el tutorial de mi proyecto. Para arreglar el tema de como se ven los dialogos, he establecido un corutina que me lleve a través de los diálogos con el siguiente codigo (dejo comentarios en codigo):
public IEnumerator GenreStory()
{
intera.setState(PlayerState.InStory); // seteo estado de personaje para que sea controlado desde codigo y no desde input
player.setDirection("horizontal", 1);
player.GetComponentInChildren<Camera>().transform.Translate(Vector2.left * 20);
Instantiate(npc, new Vector3(0.7f,0,1), Quaternion.identity);
string[] nm = new string[16];
#region dialogo_1
nm[0] = "¡Alo!";
nm[1] = "... ...";
nm[2] = "¡¡AAAALOOO!!";
nm[3] = "... ... ...";
nm[4] = "Parece que está dormido.";
nm[5] = "Parece que está dormido. Que cosa más rara.";
nm[6] = "Es un enclenque humano.";
nm[7] = "Eeeer...";
nm[8] = "Eeeer... ¿Es hombre o mujer?";
nm[9] = "Eeeer... ¿Es hombre o mujer? ... Mmmm.";
nm[10] = "Hay una sola forma de saberlo.";
nm[11] = "¡A la una!";
nm[12] = "¡A la una! ¡A las dos!";
nm[13] = "¡A la una! ¡A las dos! ...";
nm[14] = "&yvn(Hombre,Mujer)/¿Eres Hombre o Mujer?";
nm[15] = "&ans/¡¡AAAAHH!! ¡¡¡Está despierto!!!|¡¡AAAAHH!! ¡¡¡Está despierta!!!";
#endregion
FindObjectOfType<NPC>().msg = nm;
navi.setSummon();
navi.setNPCDir(Vector2.left);
for (int i = 0; i < nm.Length; i++)
{
setYield(false);
bool l;
if (i == nm.Length - 1) l = true;
else l = false;
intera.Talk("", nm, i, l);
if (i == nm.Length - 1) StartCoroutine(ChrNameStory());
yield return new WaitUntil(() => getYield() == true); // esto se logra al apretar "Aceptar" desde otra clase
}
}
por alguna razón, la rutina ChrNameStory() nunca comienza. Además, si vuelvo a apretar "Aceptar" me vuelve a comenzar la corutina desde el comienzo :S
esta es mi primera vez utilizando corutinas, asi que cualquier feedback es muy bienvenida.
P.S.: originalmente, despues del for loop la corutina continuaba, pero me di cuenta que cuando retorna la rutina se da por terminada (creo).
P.S.: dejo video de como funciona actualmente en https://youtu.be/cwi3TdN6_Xg
P.S.: acabo de descubrir que por alguna razon, al terminar la rutina no es que la rutina se "resetee", sino que le cambia el estado a player y lo saca del modo historia.