TL; DR
- UnityWebRequest.Get ではなく UnityWebRequestTexture.GetTexture を使いましょう。
UnityWebRequest について
- 昔のバージョンの Unity では
WWW
というクラスを用いて HTTP な通信を行っていました。 - しかし、Unity 5.4 から
UnityWebRequest
というクラスが新たに登場しました。 - このクラスの登場により、より柔軟な HTTP Request / Response が行えるようになりました。
- UniRx と組み合わせると、より便利になったりするのですが、それはまた別のお話。
本題
- 最初、画像を取得する際の処理を以下のように考えました。
- しかし、そもそもそのやり方だとうまく Texture2D のインスタンスが生成できませんでした。
- じゃあ、何故か?というと、元々 2017.1.0f1 以前の Unity には UnityWebRequest.GetTexture というメソッドがあり、そちらを使うのが正解でした。
- しかし、2017.1.0f1 で UnityWebRequestTexture.GetTexture に移動しているので、こちらを使う必要がある、というオチでした。
- なお、 AudioClip や MovieTexture (モバイル非対応) も同様に UnityWebRequestMultimedia.GetAudioClip や UnityWebRequestMultimedia.GetMovieTexture が正解っぽいです。
- また、データを受けるための DownloadHandler はそれぞれ DownloadHandlerTexture と DownloadHandlerAudioClip と DownloadHandlerMovieTexture という専用のクラスが用意されています。
所感
- 利用している Unity のバージョンによって処理が異なるので、共通ライブラリ化してたりすると
#if UNITY_X_Y
な制御が増えそうですね…。