【7】の手順までで、無事に干支を大量に自動生成することが出来ました。
現在生成された干支はプレファブの情報をそのまま利用していますのですべての干支が同じ絵柄になってしまっています。
そのままではゲームになりませんので、干支のイメージや情報を変更する手順が必要です。
このとき、干支のイメージを1つずつ変えて、12個のゲームオブジェクトを作成する必要はありません。
最も効率よく、かつ間違いのない方法は、
1つのEtoPrefabをプログラムによって干支の情報が自動で変更されるロジックを組み、それを実装することです。
EtoPrefabのクローンを1つ生成する
↓
生成されたクローンの干支のイメージを、12種類の干支の中から1種類をランダムで選択してその選ばれた干支のイメージにする
このようなロジックを組むことができれば、あとはそれを50回繰り返すことで、ランダムな干支のイメージに書き換えることができます。
すでに50個のEtoPrefabを生成することには成功していますので、あとは、このロジックを実現するためのスクリプトを設計していきましょう。
EtoPrefabに現在までに登録しておきたい情報は、干支の種類(EtoType)と干支のイメージの変更先、の2つです。
この情報を扱うようにするために、Etoスクリプトを用意します。
EtoPrefabに新しく作成したEtoスクリプトをアタッチすることで、生成されたタイミングで干支のイメージを差し替えて、
干支の種類や、プレファブの名前も、ランダムに選択された干支に変更するようにします。
Eto.cs
<= クリックすると開きます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Eto : MonoBehaviour
{
[Header("干支の種類")]
public EtoType etoType;
[Header("干支のイメージ変更用")]
public Image imgEto;
[Header("スワイプされた干支である判定。trueの場合、この干支は削除対象となる")]
public bool isSelected;
[Header("スワイプされた通し番号。スワイプされた順番が代入される")]
public int num;
/// <summary>
/// 干支の初期設定
/// </summary>
public void SetUpEto(EtoType etoType, Sprite sprite) {
// 干支の種類を設定
this.etoType = etoType;
// 干支の名前を、設定した干支の種類の名前に変更
name = this.etoType.ToString(); ;
// 引数で届いた干支のイメージに合わせてメージを変更
ChangeEtoImage(sprite);
}
/// <summary>
/// 干支のイメージを変更
/// </summary>
/// <param name="changeSprite">干支のイメージ</param>
public void ChangeEtoImage(Sprite changeSprite) {
imgEto.sprite = changeSprite;
}
}