Edited at

Unityで複数のGameObjectからランダムに一つ選んで生成する方法

More than 3 years have passed since last update.


はじめに

Unityで複数のGameObjectからランダムに一つ選んで生成する方法についてまとめました。


目次

1.スクリプト上で配列宣言

2.スクリプトをGameObjectに関連付け

3.Sizeを決める

4.オブジェクトをPrefab化

5.Prefabを登録

6.ランダムに生成する


1.スクリプト上で配列宣言

下のようにスクリプト上でGameObjectの配列を宣言する。

using UnityEngine;

using System.Collections;
public class TrainScript : MonoBehaviour
{
public GameObject[] Train;
}


2.スクリプトをGameObjectに関連付け

空のGameObjectにスクリプトをドラッグ&ドロップで関連付けをする。


3.Sizeを決める

GameObjectのInspector上の追加したスクリプトの欄にSizeという項目が出る。ここにランダムに呼び出したいオブジェクトの数を入力しenterを押す。


4.オブジェクトをPrefab化

呼び出したいオブジェクトをHierarchyからProjectにドラッグ&ドロップでPrefab化する。Hierarchy上のオブジェクトは消す。


5.Prefabを登録

3のSizeの下にElementの項目が出ているので、ドラッグ&ドロップで好きなPrefabを登録。下のようになればOK。

スクリーンショット 2016-07-07 5.32.57.png


6.ランダムに生成する

下のようにスクリプトに追加するとスタートしたとき指定したオブジェクトの配列からランダムに一つ選んで生成される。

using UnityEngine;

using System.Collections;
public class TrainScript : MonoBehaviour
{
public GameObject[] Train;

void Start ()
{
number = Random.Range (0, Train.Length);
Instantiate(Train[number],transform.position,transform.rotation);
}
}


参考

UnityのGameObject配列へInspector経由でGameObjectを登録する