はじめに
Unityで3種類のSphereのPrefabを1秒間隔で生成し、その種類を順番に切り替える方法を解説します。今回は簡単なスクリプトを書いて、順番にSphereを生成していきます。
ステップ1:Prefabの準備
- Sphereを作成:ヒエラルキー(Hierarchy)ウィンドウで右クリックし、「3D Object」→「Sphere」を選びます。作成したスフィアにそれぞれ別の色を付けます。
- Prefabとして保存:作成したSphereをプロジェクト(Project)ウィンドウにドラッグ&ドロップしてPrefabにします。同じ手順で3種類のSphereを作成し、それぞれ「Sphere1」、「Sphere2」、「Sphere3」と名前をつけてください。
ステップ2:スクリプトの作成
- スクリプトを作成:プロジェクトウィンドウで右クリックし、「Create」→「C# Script」を選び、「PrefabSpawner」と名前をつけます。
- スクリプトを編集:以下のコードをスクリプトにコピペしてください。
コード全体の説明
このスクリプトは、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秒ごとに順番にオブジェクトを生成します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PrefabSpawner : MonoBehaviour
{
public GameObject[] ballArray;
void Start()
{
StartCoroutine("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;
}
}
}
ステップ3:スクリプトの適用
- スクリプトをアタッチ:作成したスクリプトを適当なGameObject(例えば「空のGameObject」)にドラッグ&ドロップしてアタッチします。
- Prefabをアタッチ:スクリプトをアタッチしたGameObjectを選び、インスペクター(Inspector)ウィンドウで「ballArray」配列に先ほど作成した3種類のSphere Prefabをドラッグ&ドロップして設定します。
ステップ4:テスト
- プレイモードでテスト:Unityエディタのプレイボタンを押して、1秒ごとに異なるSphereが生成されることを確認します。
これで、3種類のSphereが1秒間隔で生成され、順番に切り替わるスクリプトが完成です。もし、何かうまくいかない場合や質問があれば、気軽に聞いてくださいね。
おすすめのアセット
「25 Simple Games for Android and iOS」は、初心者でも簡単に使える25種類のゲームテンプレートがセットになったアセットパックです。このパックには、パズルゲームやアクションゲーム、レースゲームなど、さまざまなジャンルのゲームが含まれており、すぐに利用可能です。