Depuis un moment déjà Unity indique d'utiliser la classe UnityWebRequest pour tout ce qui concerne les requêtes vers un serveur web. Découvrez comment utiliser UnityWebRequest.
Il y a quelques années seule la classe WWW de Unity existait, et vous pouvez d'ailleurs trouver sur ce site un tutoriel traitant de l'utilisation de la classe WWW.
Mais depuis le temps a passé et l'API de Unity a évolué au profit de UnityWebRequest.
A ce sujet sachez que l'utilisation de la classe WWW est désormais dépréciée !
Contacter une url web avec UnityWebRequest
L'utilisation de cette classe est somme toute assez équivalente à celle de la classe WWW. En effet la première chose à prendre en considération, c'est l'URL , plus exactement URI, de la page web ou de l'API web à contacter.
Ensuite il suffit d'utiliser la méthode Get pour effectivement télécharger le résultat de cette URL.
public class Example : MonoBehaviour
{
void Start()
{
// Une page existante
StartCoroutine(GetRequest("https://makeyourgame.fun"));
// Une page non existante.
StartCoroutine(GetRequest("https://error.html"));
}
IEnumerator GetRequest(string uri)
{
using (UnityWebRequest webRequest = UnityWebRequest.Get(uri))
{
// On envoie la requête et on attend la réponse
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError)
{
Debug.Log("Error: " + webRequest.error);
}
else
{
Debug.Log(":\nReceived: " + webRequest.downloadHandler.text);
}
}
}
C'est ainsi assez simple de contacter un URI sur un serveur web, sachant qu'ici on ne fait que récupérer du texte qui peut être d'ailleurs du JSON.
Récupérer un son AudioClip depuis un serveur web
L'API de Unity s'est enrichie au passage d'une méthode très pratique pour télécharger et disposer d'un son assez facilement. En effet on peut désormais utiliser UnityWebRequestMultimedia.GetAudioClip pour automatiquement importer, même au runtime, un son depuis une page web/serveur web.
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
public class MyBehaviour : MonoBehaviour
{
void Start()
{
StartCoroutine(GetAudioClip());
}
IEnumerator GetAudioClip()
{
using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip("http://www.my-server.com/audio.ogg", AudioType.OGGVORBIS))
{
yield return www.Send();
if (www.isError)
{
Debug.Log(www.error);
}
else
{
AudioClip myClip = DownloadHandlerAudioClip.GetContent(www);
}
}
}
}
La méthode prend 2 paramètres :
- l'uri à contacter pour envoyer la requête
- le format AudioType du son attendu. Il est à noter que le format .mp3 n'est pas pris en charge !
De plus on obtient directement un objet de type AudioClip en sortie du téléchargement ... génial, non ?
Ainsi il est temps de vous y mettre si vous souhaitez gérer votre jeu ou application, avec un système de datas hébergé sur un serveur web. De plus UnityWebRequest est plus sécurisé que la classe WWW dépréciée !
Une démo en vidéo ?
Un souci ? Venez nous en parler sur discord !