Resourcesからスプライトを分割して読み込む

このページはVersion 5.6.1f1 Personalを対象としています。

更新履歴

参考URL

概要

このページではResourcesからスプライトを分割して読み込むやり方をまとめています。 イメージとしてはDXライブラリのLoadDivGraph関数に近いです。 読み込んだスプライトはSpriteRendererのspriteプロパティに設定して使うので、 マップのタイルのように使うにはSpriteオブジェクトをPrefabにしてInstantiateして使う必要があります。 利点は画像ファイルをUnity外部で分割してから読み込む手間が省けるということです。

コード

    //スプライトを「Assets/Resorces/path」から読み込む
    public static Sprite GetSprite(string path)
    {
        return Resources.Load<Sprite>(path);
    }

上のコードは分割せずに読み込むコードです。 pathはフォルダは「/」で区切り、ファイルの拡張子は省略します。

    //スプライトを「Assets/Resorces/path」から読み込み、
    //幅width・高さheightで分割し、、
    //右方向・下方向の順で配列として返す。
    public static Sprite[] GetDivSprite(string path, int width, int height)
    {
        Sprite sprite= Resources.Load<Sprite>(path);
        int xMax = ((int)sprite.bounds.size.x / width);
        int yMax = ((int)sprite.bounds.size.y / height);
        Sprite[] sprites = new Sprite[xMax * yMax];
        for (int y = 0; y<yMax; y++)
        {
            for (int x = 0; x < xMax; x++)
            {
                Rect rect = new Rect(x * width, (yMax - y - 1) * height, width, height);
                sprites[y * xMax + x] = Sprite.Create(sprite.texture, rect, new Vector2(0.5f, 0.5f), 1.0f);
            }
        }
        return sprites;
    }

上のコードが分割して読み込むコードです。 ポイントはSprite.Createメソッドで、 sprite.textureの一部分から新たなスプライトを作成しているところです。 引数pivotで中心座標を指定するようです。 new Vector2(0.5f, 0.5f)で中央が中心になります。 キャラクターなどには良いですが、マップのタイルなどに使うと使いづらいかもしれません。 ちなみにUIのImageオブジェクトで使うと、pivotは無視され左上が基点となるようです。

戻る

inserted by FC2 system