Noticias

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

consultas Mysql (que Unity espere)

Iniciado por gele81, Enero 09, 2016, 04:14:23 PM

Tema anterior - Siguiente tema
Hola a todos.Estoy montando un juego con base de datos MySql el problema que tengo es el siguiente. 

//hago la consulta
StartCoroutine(consultaJug.jugadorPuntuacion(Id_Usuario));

//intento utilizar el resultado de la consulta
var res = consultaJug.respuesta;

Class consultaJug{
    jugadorPuntuacion(Id_Usuario)
    {
       var loginForm = "la consulta en que hago";

       var httpResponse = WWW(loginForm);
   
    yield httpResponse;
   
    var respuesta = httpResponse.text;
    }


}
El caso es que da error la variable res porque por lo que yo entiendo la consulta tarda un poco más en producirse que lo que avanza unity en leer las instrucciones. Con lo cual para que me valga lo que hago es meterlo en un bucle hasta que carga la respuesta. Un poco digamos a lo bruto.Pregunta ¿como puedo hacer para que unity no lea la instrucción 
var res = consultaJug.respuesta;
hasta que la base de datos no me haya pasado la respuesta de la consulta? Un saludo. Espero haberme explicado bien.

Enero 09, 2016, 05:05:32 PM #1 Ultima modificación: Enero 09, 2016, 05:10:06 PM por Braltor
puedes mirar si www.isDone en cada update, o usar corrutinas para esperar:http://forum.unity3d.com/threads/c-coroutine-for-www.19584/#post-133401">http://forum.unity3d.com/threads/c-coroutine-for-www.19584/#post-133401yo prefiero vigilar isDone pq puedo cancelar la peticion, y tambien puedes vigilar el progreso

Enero 09, 2016, 09:23:31 PM #2 Ultima modificación: Enero 09, 2016, 09:25:51 PM por gele81
Ops... Pensaba que lo tenia por corrutinas... //hago la consulta
StartCoroutine(consultaJug.jugadorPuntuacion(Id_Usuario));
 Debug.Log("4")
//intento utilizar el resultado de la consulta
var res = consultaJug.respuesta;

Class consultaJug{
    jugadorPuntuacion(Id_Usuario)
    {
        var loginForm = "la consulta en que hago";
        Debug.Log("1")
        var httpResponse = WWW(loginForm);
        Debug.Log("2")
    while(!httpResponse.isDone){
        yield httpResponse;
        Debug.Log("3")
        var respuesta = httpResponse.text;
    }
    }


}

pues claro hombre, el log esta bien pq la idea de la corrutina es q no detenga la ejecucion del que llama... tienes que poner la accion en la corrutina despues de esperar con ese while

Vale lo he arreglado.Es que mezcle las corrutinas y el www.isDone.He quitado la corrutina, el yield y he dejado el isDone. y va fetén.lo pongo en un bucle que no hace nada. No se lo correcto que será eso, pero funciona.
while(!httpResponse.isDone){}
Gracias http://unityspain.com/profile/27727-braltor/?do=hovercard&referrer=http%253A%252F%252Funityspain.com%252Ftopic%252F34870-consultas-mysql-que-unity-espere%252F" title="Go to Braltor's profile" id="ips_uid_4" style="box-sizing: border-box; color: inherit; text-decoration: none; background-color: transparent;" href="<___base_url___>/profile/27727-braltor/">Braltor. Un saludo.

Etiquetas: