スプライトをスライスした数だけプレハブ化して、それぞれ Instantiate
で作りたい数値を作成する方法だとプレハブ化する数が多いと大変です。
ひとつだけプレハブを作成しておいて、実行時に Sprite を差し替える方法だと用意するプレハブがひとつで済むので管理が楽になります。
Sprite Editor でスプライトをスライスする
プレハブをひとつ作る
スライスした数値のひとつを Hierarchy にドロップしてプレハブ化します。
このプレハブを実行時に Instantiate
して複数の数値を作ります。SpriteRenderer コンポーネントの Sprite を差し替えることで任意の数値を作成します。
ここでは digit という名前でプレハブ化しました(下図)。
実行時に 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 つ作れています(下図)。
参考
数値画像の素材は、ぴぽや倉庫さんからお借りしました。