【Unity】RawImageでネットワークから取得した画像の表示する方法

RawImage

不定期のC#のお勉強。

ImageではなくRawImageを使うと、ネットワークから取得した画像の表示することができるようなので試してみました。

Unity - マニュアル: script-RawImage

やり方

下記のコード(GetNetworkImage.cs)を適当に作成したRawImage(h100 w100)にアタッチして再生すると、ネットから画像を取得して表示できます。

f:id:min0124:20180127161341p:plain

ブログのプロフィール画像を表示させてみました。

コード

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

public class GetNetworkImage : MonoBehaviour
{
    IEnumerator Start()
    {
       string url = "https://cdn.profile-image.st-hatena.com/users/min0124/profile.png";
        WWW www = new WWW(url);

        yield return www;

        RawImage rawImage = GetComponent<RawImage>();
        rawImage.texture = www.textureNonReadable;
    }
}

参考

Unity : Image と RawImage は何が違うのか - いんでぃーづ

メモ

IEnumerator Start IEnumeratorはコルーチンを使えるようにする型。

new WWW(url); wwwクラスのコンストラクタに画像URLを指定

Unity - スクリプトリファレンス: WWW

yield return www;イールド。 コルーチン(時間を絡めた処理)画像ダウンロードされるまで待つ

この記述が無いと返り値を返さないとエラーerror CS0161: `ImageDownloder.Start()': not all code paths return a valueがでる

www.textureNonReadable;ダウンロードしたデータからピクセルデータの読み込みができない Texture2D を生成し返す

Unity - スクリプトリファレンス: WWW.textureNonReadable

おまけ。rawImage.SetNativeSize();を追加すると画像サイズで表示できる

Unity - スクリプトリファレンス: UI.RawImage.SetNativeSize