logo

Unity】一枚のイメージ画像を縦横のタイル状に分割する方法

投稿日2023-03-23

更新日2024-05-03

Picture of the logo
目次(タップして移動)

UnityのUGUIを使用して、一枚のイメージ画像を縦横に分割して表示する方法を紹介します。 timeimage

  1. 分割したいイメージをUnityにインポートします。

  2. 分割したいイメージをUGUIのImageコンポーネントに設定します。

  3. 画像を縦横に分割するためのスクリプトを作成します。

  4. スクリプトをUGUIのImageコンポーネントに追加します。

  5. rows変数とcolumns変数を設定し、画像を分割します。

using UnityEngine;
using UnityEngine.UI;

public class ImageSplitter : MonoBehaviour
{
    public Image imageToSplit; //分割するイメージ
    public int rows = 3; //縦の分割数
    public int columns = 3; //横の分割数
    private Texture2D textureToSplit; //イメージのテクスチャ

    void Start()
    {
        SplitImage();
    }

    void SplitImage()
    {
        textureToSplit = imageToSplit.sprite.texture; //イメージからテクスチャを取得
        int width = textureToSplit.width / columns; //一つの分割画像の幅
        int height = textureToSplit.height / rows; //一つの分割画像の高さ
        for (int y = 0; y < rows; y++)
        {
            for (int x = 0; x < columns; x++)
            {
                GameObject quad = new GameObject("Quad"); //Quadを生成
                quad.transform.SetParent(transform); //QuadをこのスクリプトがアタッチされているGameObjectの子にする
                RectTransform rectTransform = quad.AddComponent<RectTransform>(); //RectTransformを追加
                rectTransform.sizeDelta = new Vector2(width, height); //Quadのサイズを指定
                rectTransform.pivot = new Vector2(0, 1); //Quadのピボットを左上にする
                rectTransform.localPosition = new Vector3(x * width, -y * height, 0); //Quadの位置を指定
                Image image = quad.AddComponent<Image>(); //Imageを追加
                Sprite sprite = Sprite.Create(textureToSplit, new Rect(x * width, y * height, width, height), new Vector2(0.5f, 0.5f)); //分割したテクスチャからSpriteを作成
                image.sprite = sprite; //ImageにSpriteを設定
                image.SetNativeSize(); //Imageのサイズを変更せずに、Native Sizeにする
            }
        }
    }
}

timeimage 上記のコードで、UGUIのImageコンポーネントを使用して、一枚のイメージ画像を縦横に分割して表示することができます。

【ちょっと豆知識】QuadとPlaneの違いについて

ところで、Unityにおいて、QuadとPlaneは両方とも平面のオブジェクトを生成するために使用されるプリミティブの一種ですが、いくつかの違いがあります。

形状:Quadは四角形の平面で、Planeは正方形または長方形の平面です。

メッシュ:Quadは2つの三角形からなるメッシュを持ち、Planeは1つの四角形からなるメッシュを持ちます。

面向き:Quadの法線は、Y軸正方向に向いています。一方、Planeの法線は、Z軸正方向に向いています。この違いにより、QuadとPlaneの表面の向きが異なります。

座標系:QuadのUV座標系は、(0,0)から(1,1)までの範囲を持ちます。一方、PlaneのUV座標系は、X軸とY軸に対してスケーリングされた範囲を持ちます。

使用用途:Quadは、2Dスプライトやビルボードの背景など、2D表示に適しています。一方、Planeは、3Dオブジェクトの一部や地形に適しています。

以上の違いから、QuadとPlaneは似ているが、使用用途によって異なる違いがあることが分かります。






このサイトをシェアする