はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】ネット上から画像を取得して表示してみる

はじめに

今回はネットから画像を取得してUnity上に表示をしてみる記事になります!

イメージとしては以下の画像の感じです。

f:id:hanaaaaaachiru:20190713123459p:plain

これはHttpサーバーにリクエストを送ることで、画像のデータをレスポンスとして取得できます。

これを実現するためにHttpClientを使うなどの方法が考えられますが、Unityではそれ専用のメソッドが用意されているようです。

またUnityのメソッドではテクスチャを効果的にダウンロードしソートするために最適化されているようで、非同期等の特別な理由がなければこちらを利用した方がよさそうです。

このUnityのメソッドの簡単な説明とその使い方の例をみていきましょう。

UnityWebRequestTexture.GetTextureメソッド

そのUnityの専用のメソッドはUnityWebRequestTexture.GetTextureメソッドです。

public static Networking.UnityWebRequest GetTexture (string uri);
引数 意味
uri ダウンロードするイメージの URI

Networking.UnityWebRequestTexture-GetTexture - Unity スクリプトリファレンス

一応もう一つだけオーバーロードがあるのですが、基本はこちらだけで良いと思います。

かなり直感的に使えるのでいい感じですね。

使用例

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
using UnityEngine.UI;

public class ImageTest : MonoBehaviour
{
    private const string URI = "https://4.bp.blogspot.com/-4xxTe_qeV1E/Vd7FkNUlwjI/AAAAAAAAxFc/8u9MNKtg7gg/s800/syachiku.png";

    [SerializeField] private RawImage _image;

    IEnumerator Start()
    {
        UnityWebRequest www = UnityWebRequestTexture.GetTexture(URI);

        //画像を取得できるまで待つ
        yield return www.SendWebRequest();

        if (www.isNetworkError || www.isHttpError)
        {
            Debug.Log(www.error);
        }
        else
        {
            //取得した画像のテクスチャをRawImageのテクスチャに張り付ける
            _image.texture = ((DownloadHandlerTexture)www.downloadHandler).texture;
        }
    }
}

f:id:hanaaaaaachiru:20190714193347p:plain

さいごに

ネット上から取得ができることで、様々な活用方法があると思います。

是非上手く活用してみてください!