はじめに
Unityで3種類のSphereのPrefabを1秒間隔で生成し、その種類を順番に切り替える方法を解説します。今回は簡単なスクリプトを書いて、順番にSphereを生成していきます。
Unityを触ったことがないという方はコチラの記事から見てみてください!
Step 1: Prefabの準備
まず、3種類のPrefabを準備する必要があります。以下の手順で進めていきましょう!
1. 3Dオブジェクトの作成
- Sphereを作成
- Hierarchyウィンドウで右クリックします。
- 3D Object → Sphere を選択します。
- これで球体(Sphere)がシーンに追加されます。
- 球体のカスタマイズ
- 作成したSphereを選択し、Inspectorウィンドウで以下のように変更して個性を持たせます。
- サイズ変更: TransformのScaleを調整(例:
2, 2, 2
)。 - 色の変更: Materialを設定(色は赤、青、緑などを設定すると分かりやすい)。
- サイズ変更: TransformのScaleを調整(例:
- 作成したSphereを選択し、Inspectorウィンドウで以下のように変更して個性を持たせます。
- 同様の手順を3回繰り返し、異なる3種類のSphereを作成します。
2. Prefab化
- Prefabとして保存
- 作成した3つのSphereをそれぞれ Projectウィンドウ にドラッグ&ドロップします。
- これにより、Prefabとして保存されます。
- Prefabの名前変更
- わかりやすい名前をつけます(例:
Sphere1
,Sphere2
,Sphere3
)。
- わかりやすい名前をつけます(例:


これで、3種類のSphereがPrefabとして準備できました。次は、このPrefabを使って順番に生成するスクリプトを作成していきます!
Step 2: スクリプトの作成
次に、3種類のPrefabを順番に1秒間隔で生成するスクリプトを作成します。Unity初心者でも簡単にできるように、手順を丁寧に説明します!
1. スクリプトファイルの作成
- Scriptsフォルダの作成
- Projectウィンドウで右クリック → Create → Folder を選択し、フォルダ名を
Scripts
にします。
- Projectウィンドウで右クリック → Create → Folder を選択し、フォルダ名を
- C#スクリプトの作成
- Scriptsフォルダを右クリック → Create → C# Script を選択します。
- スクリプトの名前を
PrefabSpawner
に変更します。
2. スクリプトにコードを記述
以下のコードをスクリプトに書き込みます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PrefabSpawner : MonoBehaviour
{
public GameObject[] ballArray; // 生成するPrefabの配列
void Start()
{
// コルーチンの開始
StartCoroutine("SpawnPrefabs");
}
IEnumerator SpawnPrefabs()
{
// 無限ループでPrefabを順番に生成
while (true)
{
for (int i = 0; i < ballArray.Length; i++)
{
// 1秒間隔で生成
yield return new WaitForSeconds(1.0f);
// Prefabをシーンに生成
Instantiate(ballArray[i], new Vector3(i * 2.0f, 0, 0), Quaternion.identity);
}
}
}
}
3. コードのポイント解説
public GameObject[] ballArray;
- 配列に3種類のPrefabを登録するための変数を用意しています。
StartCoroutine("SpawnPrefabs");
- コルーチンを使って非同期的にPrefabを生成します。
yield return new WaitForSeconds(1.0f);
- 各Prefabを1秒間隔で生成します。
Instantiate
- 指定した位置(例:
new Vector3(i * 2.0f, 0, 0)
)にPrefabを生成します。
- 指定した位置(例:
コード全体の説明
このスクリプトは、Unityで複数のプレハブ(Prefab)を順番にスポーン(生成)するためのものです。特定の間隔(この場合は1秒ごと)で、ballArray
という配列に含まれているオブジェクトを一つずつ生成します。
各部分の説明
1. using
ディレクティブ
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Collections
とusing System.Collections.Generic
は、コレクション関連のクラスやインターフェースを使うためのものです。using UnityEngine
は、Unityの機能を使うためのものです。
2. クラス宣言
public class PrefabSpawner : MonoBehaviour
{
public GameObject[] ballArray;
public class PrefabSpawner : MonoBehaviour
は、新しいクラスPrefabSpawner
を定義しています。このクラスはMonoBehaviour
を継承しています。public GameObject[] ballArray;
は、生成するプレハブの配列を定義しています。
3. Start
メソッド
void Start()
{
StartCoroutine("BallSet");
}
Start
メソッドは、Unityでスクリプトが実行を開始したときに一度だけ呼ばれるメソッドです。StartCoroutine("BallSet");
は、BallSet
という名前のコルーチンを開始します。
4. BallSet
コルーチン
IEnumerator BallSet()
{
for (int i = 0; i < ballArray.Length; i++)
{
yield return new WaitForSeconds(1.0f);
GameObject ball = GameObject.Instantiate(ballArray[i]) as GameObject;
}
}
IEnumerator BallSet()
は、コルーチンを定義しています。コルーチンは、Unityで時間の経過に伴って実行するための方法です。for (int i = 0; i < ballArray.Length; i++)
は、ballArray
の長さまでループを実行します。yield return new WaitForSeconds(1.0f);
は、次のステップに進む前に1秒間待つことを意味します。GameObject ball = GameObject.Instantiate(ballArray[i]) as GameObject;
は、ballArray
の中の次のオブジェクトを生成します。
全体の動き
- ゲームが開始されると、
Start
メソッドが呼ばれます。 Start
メソッドの中で、BallSet
コルーチンが開始されます。BallSet
コルーチンでは、ballArray
の各要素について、1秒ごとに順番にオブジェクトを生成します。
4. スクリプトを保存
コードを書き終えたら、Ctrl + S(またはCmd + S)で保存します。
これでスクリプトは完成です!次のステップでは、このスクリプトをUnityで設定して実行します。
Step 3: スクリプトの設定
ここでは、作成したスクリプトをUnityのシーンに設定し、Prefabを順番に生成できるようにします。簡単な手順で進められますので、一緒にやってみましょう!
1. 空のGameObjectを作成
- 空のGameObjectを追加
- Hierarchyウィンドウで右クリック → Create Empty を選択します。
- 作成したGameObjectに分かりやすい名前(例:
PrefabSpawner
)をつけます。
- 位置のリセット
- 選択したGameObjectのTransformを確認し、Position を
(0, 0, 0)
にリセットします。- 方法: InspectorウィンドウでTransformの横にある ⋮ をクリック → Reset。
- 選択したGameObjectのTransformを確認し、Position を
2. スクリプトをアタッチ
- スクリプトを設定
- Projectウィンドウの
Scripts
フォルダ内にあるPrefabSpawner
スクリプトを、HierarchyウィンドウのPrefabSpawner
GameObject にドラッグ&ドロップします。
- Projectウィンドウの
- Inspectorで確認
PrefabSpawner
GameObjectを選択すると、Inspectorウィンドウにスクリプトが追加されていることを確認できます。
3. Prefabを登録
- 配列にPrefabを追加
- Inspectorウィンドウで、
Ball Array
フィールドに3つのPrefabをドラッグ&ドロップします。- ドロップの順番が生成される順番になります。
- 例:
Sphere1
,Sphere2
,Sphere3
の順に設定。
- Inspectorウィンドウで、
- 確認
Ball Array
の右横に サイズ(3) と表示されていることを確認してください。- 配列に3つのPrefabが正しく登録されていることを確認します。

Step 4: 動作確認
最後に、作成したスクリプトと設定が正しく動作しているか確認します。以下の手順でチェックを行いましょう。
1. プレイモードの開始
- Unityエディターで再生
- Unityエディター上部の 再生ボタン (▶)をクリックします。
- シーンがプレイモードに入り、スクリプトが動作を開始します。
2. 動作を確認するポイント
- Prefabが順番に生成されることを確認
- シーン内に、1秒間隔で3種類のSphereが順番に生成されていることを確認してください。
- 生成される位置を確認
- Sphereがコードで指定した位置(例:
new Vector3(i * 2.0f, 0, 0)
)に生成されているか確認します。 - 必要であれば位置の指定を変更できます。
- Sphereがコードで指定した位置(例:

これで、3種類のSphereが1秒間隔で生成され、順番に切り替わるスクリプトが完成です。もし、何かうまくいかない場合や質問があれば、気軽に聞いてくださいね。
よくある質問
- Qスクリプトが動かないときはどうすればいいですか?
- A
以下を確認してください:
- スクリプトがGameObjectに正しくアタッチされているか。
- Prefabが
Ball Array
に正しく登録されているか。
- QPrefabの生成位置を変えるにはどうしたらいいですか?
- A
Instantiate
の引数に位置情報を追加します:Instantiate(ballArray[i], new Vector3(0, i * 2, 0), Quaternion.identity);
- Qもっとたくさんの種類を生成できますか?
- A
ballArray
の要素数を増やせば対応可能です。
おすすめのアセット
「25 Simple Games for Android and iOS」は、初心者でも簡単に使える25種類のゲームテンプレートがセットになったアセットパックです。このパックには、パズルゲームやアクションゲーム、レースゲームなど、さまざまなジャンルのゲームが含まれており、すぐに利用可能です。