【Unity】Prefabから作成されたゲームオブジェクトの名前を変更
通常、Prefabからゲームオブジェクトを作成すると、ヒエラルキーに表示されるゲームオブジェクト名は、プレファブ名+"(Clone)"となります
1つだけであればいいのですが、複数作成されている場合、同じ名前ではどのゲームオブジェクトを指しているのかがわからず、デバッグがやりにくくなります
今回は、作成されたゲームオブジェクトの名前をユニークなもの(それぞれ違うという意味)にする方法について説明します
目次
サンプルシーン
空のゲームオブジェクトを作成し、Spawnerという名前に変更します
DiffNameSpawnerスクリプトをアタッチします
作成ずみのPrefab(事前にSphereをベースに作成済み)をアタッチしたスクリプトのインスペクター上のPrefabのアウトレット接続します
Prefabから生成されたゲームオブジェクトの名前が同じになるケース
コード
using UnityEngine;
public class DiffNameSpawner : MonoBehaviour
{
[SerializeField]
GameObject prefab; // シリアライズされた変数。エディターから設定可能なプレハブオブジェクトを指定します。
void Start()
{
// Startメソッドが呼び出されると、Spawnerメソッドを0秒後に初めて呼び出し、その後は1秒ごとに繰り返し呼び出します。
InvokeRepeating(nameof(Spawner), 0, 1);
}
void Spawner()
{
// 指定されたプレハブオブジェクトをインスタンス化(生成)します。
Instantiate(prefab);
}
}
実行結果
ヒエラルーウィンドウの表示
Enemy(Clone)
Enemy(Clone)
Enemy(Clone)
… ずっと続きます
Prefabから生成されたゲームオブジェクトの名前がユニーク(違う名前)になるように変更
コード
using UnityEngine;
public class DiffNameSpawner : MonoBehaviour
{
[SerializeField]
private GameObject prefab; // シリアライズされた変数。エディターから設定可能なプレハブオブジェクトを指定します。
private int enemyCounter; // 敵オブジェクトの生成数を追跡する変数。
void Start()
{
// ゲーム開始時に、敵を即座に生成し始め、その後1秒ごとに繰り返し生成します。
InvokeRepeating(nameof(SpawnEnemy), 0f, 1f);
}
void SpawnEnemy()
{
// 指定されたプレハブを使用して新しい敵オブジェクトを生成し、一意の名前を割り当てます。
var enemy = Instantiate(prefab);
enemy.name = $"Enemy_{enemyCounter++}"; // 敵オブジェクトの名前に連番をつけて、一意に識別できるようにします。
}
}
実行結果
ヒエラルーウィンドウの表示
Enemy_0
Enemy_1
Enemy_2
… ずっと続きます
ディスカッション
コメント一覧
まだ、コメントがありません