LoginSignup
3
8

More than 5 years have passed since last update.

スライスしたスプライトの数だけプレハブ化せずに楽をする

Last updated at Posted at 2016-12-03

スプライトをスライスした数だけプレハブ化して、それぞれ Instantiate で作りたい数値を作成する方法だとプレハブ化する数が多いと大変です。

ひとつだけプレハブを作成しておいて、実行時に Sprite を差し替える方法だと用意するプレハブがひとつで済むので管理が楽になります。

Sprite Editor でスプライトをスライスする

スクリーンショット 2016-12-03 15.22.28.png

プレハブをひとつ作る

スライスした数値のひとつを Hierarchy にドロップしてプレハブ化します。

このプレハブを実行時に Instantiate して複数の数値を作ります。SpriteRenderer コンポーネントの Sprite を差し替えることで任意の数値を作成します。

ここでは digit という名前でプレハブ化しました(下図)。

スクリーンショット 2016-12-03 15.38.18.png

実行時に SpriteRenderer のスプライトを差し替える

using System;
using UnityEngine;

public class Main : MonoBehaviour
{
    void Start()
    {
        Sprite[] sprites = Resources.LoadAll<Sprite>("digits");
        var sprite = Array.Find(sprites, e => e.name == "digits_3"); // 「3」のスプライト

        var prefab = Resources.Load<GameObject>("Prefabs/digit");
        for (int i = 0; i < 3; i++)
        {
            var obj = Instantiate(prefab); // プレハブのクローンのインスタンスを作る
            obj.transform.position = new Vector3(i, 0, 0);

            // アタッチされている SpriteRenderer の Sprite を差し替える
            var renderer = obj.GetComponent<SpriteRenderer>();
            renderer.sprite = sprite;
        }
    }
}

実行すると、3 の数字が 3 つ作れています(下図)。

スクリーンショット 2016-12-03 15.33.07.png

参考

数値画像の素材は、ぴぽや倉庫さんからお借りしました。

3
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
8