【Unity】Web上の画像を取得する方法

ごあいさつ

皆さん、こんにちは。ぶんじゃくです。

残暑厳しい中いかがお過ごしでしょうか。

さて今回はUnityで、Web上にある画像を取得して、ゲーム上で使用する方法についてお話します。

とりあえず、以下のサンプルをご覧ください。

サンプル

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

public class ClassTest : MonoBehaviour
{
    // ButtonTestとRawImageTestは、あらかじめシーン内の何かのGameObjectを指定しておきます。
    public RawImage RawImageTest;
    public Button ButtonTest;

    void Start()
    {
        StartCoroutine(CreateSprite());
    }

    IEnumerator CreateSprite()
    {
        // 画像のURLを指定する
        var strUri = "https://xxx.png";

        UnityWebRequest req = UnityWebRequestTexture.GetTexture(strUri);

        yield return req.SendWebRequest();

        if (req.isNetworkError || req.isHttpError)
        {
            Debug.Log(req.error);

            yield break;
        }
        else
        {
            Texture2D tex = ((DownloadHandlerTexture)www.downloadHandler).texture;

            // RawImageの場合はtextureを差し替えるだけでOK
            RawImageTest.texture = tex;

            // SpriteにしないといけないものはテクスチャからSpriteを生成してから差し替え
            Sprite spr = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), Vector2.zero);
            Button.GetComponent<Image>().sprite = spr;
        }
    }
}

まとめ

ポイントとしてはまず、UnityWebRequestTexture.GetTextureでTexture2D型の画像が取得できること。

次に、何らかのGameObjectに貼り付けるためにはSpriteに変換しないといけないということ。

今回は手短ですが以上になります。

さようなら。