Загрузка файлов с сервера в Unity
Простой пример, как загружать файлы в игру со своего сервера. Например, для уменьшения установочной файла — тяжелые текстуры и звуки загружаем при первом запуске игры или в фоне. Вешаем скрипт на объект и пользуемся.
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
public class HTTP : MonoBehaviour {
public delegate void HTTPResponse (int code, WWW www);
public const int OK = 100;
public const int ERROR = 101;
private static HTTP _http;
public static HTTP instance {
get {
if (!_http) {
_http = FindObjectOfType (typeof (HTTP)) as HTTP;
if (!_http)
Debug.LogError ("There needs to be one active HTTP script on a GameObject in your scene.");
}
return _http;
}
}
public static void GET (string url, HTTPResponse callback) {
instance.StartCoroutine (instance.WaitForRequest (new WWW (url), callback));
}
public static void POST (string url, Dictionary<string, string> postData, HTTPResponse callBack) {
WWWForm form = new WWWForm();
foreach (KeyValuePair<String, String> param in postData)
form.AddField(param.Key, param.Value);
instance.StartCoroutine (instance.WaitForRequest (new WWW (url, form), callBack));
}
IEnumerator WaitForRequest (WWW www, HTTPResponse callback) {
yield return www;
if (www.error == null)
callback (OK, www);
else
callback (ERROR, www);
}
}
Можно запускать хоть несколько потоков. Использовать очень просто:
HTTP.GET ("http://yandex.ru", (int code, WWW www) => {
if (code == HTTP.OK) {
string html = Encoding.UTF8.GetString (www.bytes, 0, www.bytes.Length);
Debug.Log (html);
}
});
Только не забывайте освобождать объект WWW в коллбеке :) www.Dispose();