Tutorial de Unity 3D En este tutorial trabajaremos el almacenamiento de información en una base de datos, bien sea local o remota. Dicha información puede ser propia el cliente (Créditos de juego, puntos de experiencia...) como del servidor (Nº de usuarios, hora local...), y de la misma forma ser accedida por ambos. Para ello utilizaremos MySQL para gestionar la base datos, mientras que accederemos a ella tanto para consultas como para peticiones utilizando sencillas funciones en PHP. Por supuesto, todo lo tendremos fácilmente accesible desde Unity, engine con el que trabajaremos para gestionar toda la lógica de juego. Para el alojamiento del fichero PHP utilizaremos un gestor de ficheros FTP, en nuestro caso Filezilla, mientras que para el alojamiento de la base de datos utilizaremos el hosting gratuito de Zymic. Ambas plataformas pueden ser fácilmente sustituidas por tu herramienta preferida. 1. Creación de la base de datos Generalmente nuestra base de datos tendrá que estar almacenada en un servidor remoto, generalmente son servicios de pago que nos garantizan cierto rendimiento (Tiempo de respuesta, capacidad...) pero para nuestras primeras pruebas podemos crear una cuenta en algún hosting gratuito, en nuestro caso utilizarmeos Zymic por su facilidad. Tutorial de Unity 3D Pág. 1
- Crea una cuenta gratuita en http://www.zymic.com/ - Accede al menú Control Panel Home, y dentro de él Create New Web Host Account para crear una nueva cuenta de hosting. - Accede a Database management, y accede al menú Create a database para crear una nueva base de datos, ya que puedes tener varias dentro del mismo hosting. - El siguiente paso es crear un usuario para nuestra base de datos. Para ello le daremos un nombre y una contraseña (Recuerda dichos datos, ya que serán los que utilicemos más adelante en nuestro código PHP para realizar la conexión). Los usuarios de una base de datos pueden tener distintos privilegios de acceso, básicamente puedes imaginarlos como accesos en lectura o escritura, pero si ya has trabajado anteriormente con bases de datos observarás que los permisos son insertar, crear, seleccionar, etc. - Vamos a asignar privilegios a nuestro nuevo usuario sobre la base de datos creada desde la pestaña Assign privileges. - Es muy importante que anotes en algún sitio el usuario, su password y la base de datos, y después volvemos al panel de control de Zymic, y accedemos a Database Administrator, - Ahí nos pedirán de nuevo el nombre de usuario, la contraseña y la base de datos, así que lo introducimos y entramos en el editor SQL. En la sección Consulta introducimos este script: CREATE TABLE tabla (id int(3) PRIMARY KEY, nombre char(50)); INSERT INTO tabla(id,nombre) VALUES(1,'Mamerto'); INSERT INTO tabla(id,nombre) VALUES(2,'Gilberto'); INSERT INTO tabla(id,nombre) VALUES(3,'Humberto'); INSERT INTO tabla(id,nombre) VALUES(4,'Heriberto'); SELECT * FROM tabla; Tutorial de Unity 3D Pág. 2
El script anterior es un sencillo código SQL que se encarga de crear una nueva tabla en nuestra base de datos y añadir en ella entradas compuestas por un simple número (int), que servirá como identificador de la entrada, acompañadas de un texto (char) en el que introducimos el nombre de una persona. Enhorabuena, ya has creado tu primera base de datos e introducida en ella una tabla con información. Tutorial de Unity 3D Pág. 3
2. Creación del fichero PHP En el fichero PHP escribiremos código que nos servirá para acceder a nuestra base de datos, bien sea para consultarla o para realizar modificaciones. - Crea un fichero de código llamado resultado.php e introduce en él el siguiente código: <?php $host = 'localhost'; $user = 'root'; $pass = 'password'; $db = 'database'; $i = 0; $database = mysql_connect($host, $user, $pass) or die('no se puede conectar: '. mysql_error()); mysql_select_db($db) or die('no se pudo seleccionar una base de datos.'); $query = "SELECT * FROM `tabla`"; $result = mysql_query($query) or die('la query falló: '. mysql_error()); $num_results = mysql_num_rows($result); // Utilizamos while y no for porque según documentación, es más rápido hacer un bucle while while($i<$num_results){ $row = mysql_fetch_array($result); echo $row['id']. "\t". $row['nombre']. "\n"; $i++; $i=0;?> El código anterior se encarga de acceder a nuestra base de datos y consultar su contenido utilizando un sencillo bucle while. Es muy importante que modifiques las primeras líneas del código anterior para introducir el host gratuito que acabas de crear en Zymic (p.ej. XXX.99k.org) y el nombre de usuario, contraseña y base de datos que hemos creado en él y que deberías haber anotado durante los pasos anteriores. Utilizando un gestor FTP, como por ejemplo Filezilla, aloja el fichero PHP anterior en tu hosting. Puedes encontrar los datos de acceso FTP a tu hosting en Zymic a través de la información en la columna a la izquierda del panel de control: Tutorial de Unity 3D Pág. 4
Dicha información debes introducirla en los siguientes campos de Filezilla. El puerto de conexión por defecto es el 21: Enhorabuena, ya has alojado tu código PHP en una URL accesible fácilmente por Unity, así que ahora viene el paso fácil: Sólo tenemos que acceder a él y utilizar las consultas que tiene implementadas. Tutorial de Unity 3D Pág. 5
3. Conexión con la base de datos desde Unity 3D Crea un nuevo script en JavaScript que puedes llamar por ejemplo ConectarBD.js, y añade en él el siguiente código: // Donde host será la dirección de nuestra página web. Por ejemplo: mipagina.com/result.php (no añadas www. ni http://) public var url="host/result.php"; private var mensaje:string=""; function Start(){ resultado(); // Imprime el resultado de mensaje, el cual almacena el resultado de la query alojada en el archivo php function OnGUI(){ GUI.Box(Rect(10,10,500,400), mensaje); // Llama al archivo php, el archivo obtiene un resultado de la base de datos, dicho resultado se almacena en en hs_get y si no hay errores, se almacena en mensaje function resultado(){ hs_get = WWW(url); yield hs_get; if(hs_get.error){ print("error: "+hs_get.error); else { mensaje = hs_get.text; Como podrás observar, el script anterior incorpora un método Start ( ) que se encargará de invocar automáticamente el método resultado ( ). Dicho método accederá a tu código PHP cuya URL debes indicar en la variable pública url, y siguiendo los pasos anteriores devolverá a Unity el contenido de la tabla, que será mostrado por pantalla utilizando el método OnGUI ( ). Enhorabuena, ya has accedido a tu primera base de datos con Unity 3D. Agradecimientos a drafa de UnitySpain y Aitor de Androtiyas Tutorial de Unity 3D Pág. 6