Texture2Dの画像から一部を切り抜く方法です!
このガウガウくんの画像の一部を切り取っってみましょう!
やり方
まず、シーンににRawImageを配置します。Create>UI>RawImageで配置できます。
そのRawImageに以下のコードを貼り付けます。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GetClipTexture : MonoBehaviour { public Texture2D tex; void Start() { RawImage rawImage = gameObject.GetComponent<RawImage> (); rawImage.texture = getCenterClippedTexture(tex); } // Update is called once per frame void Update() { } Texture2D getCenterClippedTexture(Texture2D texture) { Color[] pixel; Texture2D clipTex; pixel = texture.GetPixels(180, 300, 100, 90); clipTex = new Texture2D(100, 90); clipTex.SetPixels(pixel); clipTex.Apply(); return clipTex; } }
インスペクタのTexのとこに切り取りたい画像をセットします。
セットする画像のインスペクタから、Read and Write Enabledにチェックを入れておいてください。これをしないと画像を読み込んでくれません。
実行してみましょう。はいかわいい。
コードの解説
pixel = texture.GetPixels(180, 300, 100, 90);
GetPixels (x, y, width, height) で画像を切り取ることができます。(正確には、指定した範囲のピクセル色情報の取得)
引数は、x軸の切り取り開始位置、y軸の切り取り開始位置、x軸の切り取り幅、y軸の切り取り幅です。
原点 (0,0)はテクスチャの左下になります。
clipTex = new Texture2D(100, 90);
縦幅と横幅を指定して新しくテクスチャ2Dを生成。上記の切り取りコードの切り取り幅と同じにしないとエラーが出ます。
clipTex.SetPixels(pixel);
先ほど切り取ったTexture2Dのデータを先ほど作ったテクスチャ2Dに貼り付けてます。
clipTex.Apply();
貼り付けたものを反映しています。
以上です。