[Unity]いろんな画像の貼り付け方

#CubeやらImageやらの画像のスクリプトでの貼り付け方
ほとんど自分用です。

今回は色々考慮して画像リンクから画像をはりつけていきます。
PC内のpngファイルなどから直接読み取る場合は以下の記事を参考にしてみてください。
https://qiita.com/r-ngtm/items/6cff25643a1a6ba82a6c
![tiruno](https://touhoucannonball.com/assets/img/character/img_008.jpg "kawai")

##Cube(3Dオブジェクト)
以下画像を張り付けたいオブジェクトにアタッチするスクリプト

```C#:Test_Cube.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

public class Cube : MonoBehaviour
{
	//画像リンクから画像をテクスチャにする
	Texture texture;
	//テクスチャをマテリアル化するので生成しておく
	[SerializeField]Material material;
	//画像リンク
	string url = "https://touhoucannonball.com/assets/img/character/img_008.jpg";
	void Start()
    {
		//先にマテリアルのシェーダを変更しておく
		string shader = "Legacy Shaders/Diffuse";
		material.shader = Shader.Find(shader);
		StartCoroutine(Connect());
}

    //テクスチャを読み込む
	private IEnumerator Connect()
	{
		UnityWebRequest www = UnityWebRequestTexture.GetTexture(url);

		yield return www.SendWebRequest();

		if (www.isNetworkError ||www.isHttpError)
		{
			Debug.Log(www.error);
		}
		else
		{
			//textureに画像が入るよ
			texture = ((DownloadHandlerTexture)www.downloadHandler).texture;
			//textureをマテリアルにセット
			material.SetTexture("_MainTex", texture);

			gameObject.GetComponent<Renderer>().material = material;
		}
	}
}

```
こんな感じでできるかと思います。
CubeのみでなくてSphere,Capsule,Cylineder,Plane,Quadもできます。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272154/2c575856-be2d-998a-d165-d6360492cf03.png)

##Image(子にImageがあるものも)
Spriteを使って画像の貼り付けを行えます。
以下画像を張り付けたいオブジェクトにアタッチするスクリプト

```C#:Test_Image.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;

public class Test_Image : MonoBehaviour
{
	//imageはスプライトを使って描画しているので
	Sprite sprite;
	//画像リンクから画像をテクスチャにする
	Texture2D texture;
	//画像リンク
	string url = "https://touhoucannonball.com/assets/img/character/img_008.jpg";

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

	//テクスチャを読み込む
	private IEnumerator Connect()
	{
		UnityWebRequest www = UnityWebRequestTexture.GetTexture(url);

		yield return www.SendWebRequest();

		if (www.isNetworkError || www.isHttpError)
		{
			Debug.Log(www.error);
		}
		else
		{
			//textureに画像格納
			texture = ((DownloadHandlerTexture)www.downloadHandler).texture;
			//textureからspriteに変換
			sprite = Sprite.Create(texture, new Rect(0.0f, 0.0f, texture.width, texture.height), Vector2.zero);
			//Imageにspriteを張り付ける
			gameObject.GetComponent<Image>().sprite = sprite;
		}
	}
}


```
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272154/e3fae25d-c0a7-19be-b334-84008c7e60cb.png)
できました。GUIのやつは基本これで大丈夫だと思います。

##RawImage
こちらはTextureを使って画像の貼り付けを行います。
用途によって使い分けましょう。

```C#:Test_RawImage.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;

public class Test_RawImage : MonoBehaviour
{
	//画像リンクから画像をテクスチャにする
	Texture texture;
	//画像リンク
	string url = "https://touhoucannonball.com/assets/img/character/img_008.jpg";

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

	//テクスチャを読み込む
	private IEnumerator Connect()
	{
		UnityWebRequest www = UnityWebRequestTexture.GetTexture(url);

		yield return www.SendWebRequest();

		if (www.isNetworkError || www.isHttpError)
		{
			Debug.Log(www.error);
		}
		else
		{
			//textureに画像格納
			texture = ((DownloadHandlerTexture)www.downloadHandler).texture;
			//そのまま貼り付け
			gameObject.GetComponent<RawImage>().texture = texture;
		}
	}
}

```
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272154/b69fc5f5-8945-d655-7a47-c79a2b649f0f.png)

見栄えは変わんないです。

##おわり
3Dオブジェクトは**Material**
Imageは**Sprite**
RawImageは**Texture**
を変えて画像を変更させる。
ほかにもいろいろとやり方あると思いますけどとりあえずこれで表示はできると思います。