Avec la classe WWW de Unity , vous allez pouvoir contacter un script php (par exemple) placé sur un serveur web. Apprenez à récupérer des informations issues d'une base de données depuis votre application Unity.
Il est possible de récupérer sa réponse éventuelle et/ou lui passer des paramètres par la méthode GET.Ceci va nous permettre de découvrir de tutoriel en tutoriel, comment créer une architecture de jeu répartie. Ainsi certains modules ou encore fonctionnalités de votre jeu vidéo, seront sur un serveur web (les données des utilisateurs, la configuration globale du jeu...) et d'autres dans le build final distribué aux joueurs (moteur du jeu, assets ...).
La classe WWW de Unity
Cette classe permet un accès simplifié au serveur web, sans devoir utiliser un code bas niveau...c'est tout l'interêt de l'API de Unity.On pourra ainsi récupérer le contenu renvoyé par le script placé sur le serveur. Le téléchargement sera lancé en fond en appelant WWW(url) qui retourne un nouvel objet WWW, que l'on peut ensuite utiliser pour récupérer les données reçues ou les éventuelles erreurs.
using UnityEngine;
using System.Collections;
public class WWWUtilisation : MonoBehaviour
{
public string url = "http://monsupersite/index.php";//url peut posséder des paramètre GET en plus
IEnumerator Start()
{
WWW www = new WWW(url); //appel serveur
yield return www; //on attend la réponse
}
}
Il est à noter que l'url passée en appel de la méthode doit être échappée par des "%". Les protocoles http:// https:// et file:// sont supportés de manière générale.Cette classe nous permet de savoir si le téléchargement est terminé (isDone), et si ce n'est pas le cas de créer une coroutine avec une instruction yield pour attendre la fin du téléchargement, sans bloquer l'exécution du reste du programme.On peut ainsi récupérer par exemple des listes de best scores, depuis une base de données, ou télécharger une image placée sur le FTP du serveur.Avec la classe WWW on peut ajouter des paramètres GET à la fin de l'url, ainsi on peut utiliser par exemple : http://monsupersite.delire/index?pseudo=totoPour l'utilisation de paramètres POST, il vous se pencher sur la classe WWWForm de Unity.
Récupérer une info depuis un serveur web - Classe WWW
Voyons comment récupérer une information simple depuis notre script php. Un simple "echo" php de texte, codé en dur, fera l'affaire ici pour le côté serveur !!Notez que l'on peut faire un "echo" ou un "return" dans le fichier php.
<?php
$message = 'Promo exceptionnelle pendant';
$message = $message.' 24h'; //on peut concaténer pour compléter le message !!
return $message; //cela fonctionne aussi
?>
Si vous voulez installer un serveur local, utilisez WAMP, LAMP ou MAMP selon votre système d'exploitation.
Récupérer des données issues d'une base de données (BDD)
Cette fois-ci on va compliquer un peu plus et on cherche maintenant à récupérer des données issues d'une base de données. Pour le tutoriel on va tenter de savoir si notre utilisateur est premium ou pas, sachant que cette information est stockée en BDD.La mise en place des serveurs web ou MySQL, ne sera pas traité ici. Sachez tout de même qu'on utilisera l'objet PDO afin de contacter la BDD, en utilisant les langages php et MySQL.Vous pouvez trouver ci-dessous la structure de la table utilisée :
Il est à noter que le script php manque ici d'un contrôle d'existence d'au moins un "user" récupéré en BDD, avant de tenter d'accéder à l'indice 0 du tableau d'objets reçus.
Aller plus loin avec la documentation de Unity