UnityにはHTTP用の WWWクラス が用意されています。
このクラス、ダウンロードしたデータを 各種コンポーネントで使えるように自動変換 してくれるスグレモノなのです。
テクスチャに変換する
JPG,PNG形式の画像ファイルをダウンロードした後は、texture プロパティからテクスチャとして取得できます。
ダウンロードが完了する前に参照すると、以下のようなエラーメッセージが出て、表示される画像もハテナマークになってしまうので注意。
You are trying to load data from a www stream which has not completed the download yet. You need to yield the download or wait until isDone returns true.
WWWはバックグランドで動作するため、データが使用可能になる(ダウンロードが終わる)まで待つ制御をする 必要があります。
コルーチン上で動かすのが無難でしょう。
以下サンプルソース
void Start () { StartCoroutine(GetPng ()); } public IEnumerator GetPng() { // URLを指定してダウンロード WWW wwwTexture = new WWW ("http://www.test/sample.png"); // ダウンロード完了まで待つ while (!wwwTexture.isDone) { yield return null; } // uGUIのテクスチャに設定 RawImage img = gameObject.GetComponent<RawImage>(); img.texture = wwwTexture.texture; }
動画に変換する
OggTheora という形式の動画をダウンロードした場合、movieプロパティでMovieTextureクラスとして取得できます。
あんま使う人いないと思うので割愛します。公式参照
オーディオに変換する
データを全部ダウンロードしたあとに再生するか、ダウンロード中に再生を開始するかで方法が変わります。
使用可能なファイルフォーマットはこちらで確認できます。
ダウンロード再生
データを全部ダウンロードしてから再生する場合は audioClip プロパティを参照します。
こちらを使用する場合は、isReadyToPlayプロパティでの判定が必要です。
void Start () { // コルーチンとしてダウンロード開始 StartCoroutine(GetStreamingAudio ()); } public IEnumerator GetAudio() { // URLを指定してダウンロード WWW wwwAudio = new WWW ("http://www.test/loop.wav"); // AudioSource に設定 AudioSource audio = gameObject.GetComponent<AudioSource>(); audio.clip = wwwAudio.audioClip; if (!audio.clip.isReadyToPlay) { yield return null; } // 再生! audio.Play(); }
ストリーミング再生
ストリーミングで再生する場合は GetAudioClip関数を使います。
条件として、ファイルのフォーマットが XM、IT、MOD、S3M のいずれかで、関数の第二引数に true を指定します。
なにそれ知らねーよって感じのフォーマットですが、全てMODという形式から派生しているフォーマットのようです。
自分には関係なさそうなので割愛します = ストリーミング再生はあきらめます。
POSTリクエストする
もちろんPOSTメソッドでのリクエストもできます。
その場合 WWWForm というクラスにデータを載せてリクエストします。