スポンサーリンク
スポンサーリンク
UnityUnityメモ

Unity 数秒ごとにPrefabをランダムに表示・非表示

Unity

こんにちは!今回は、4つの異なるPrefab(プレハブ)を使用して、数秒ごとにランダムに表示・非表示させる方法を解説します。Prefabを使うと、ゲームオブジェクトを簡単に再利用できるので、とても便利です。それでは、さっそく始めましょう!

1. 必要なものを準備しよう

まず、Unityプロジェクトに4つのPrefabを作成しておきましょう。以下の手順で進めてください:

  1. ヒエラルキー(Hierarchy)ウィンドウで右クリックして、「3D Object」→「Cube」などのオブジェクトを作成します。
  2. 作成したオブジェクトを「Project」ウィンドウにドラッグしてPrefab化します。
  3. 同様に、4つの異なるオブジェクトをPrefab化しておきます(例えば、Cube、Sphere、Capsule、Cylinder)。

2. スクリプトを作成しよう

次に、Prefabを非表示にするスクリプトを作成します。以下の手順で進めましょう:

  1. Projectウィンドウで右クリックして、「Create」→「C# Script」を選択し、スクリプトを作成します。名前は「DeleteTime」にしましょう。
  2. 作成したスクリプトをダブルクリックして、コードエディタで開きます。
  3. 以下のコードをスクリプトに追加します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DeleteTime : MonoBehaviour
{
    public float lifeTime;

    void Start()
    {
        Destroy(gameObject, lifeTime);
    }
}

スクリプトをオブジェクトにアタッチしよう

次に、作成したスクリプトをPrefabにアタッチします。

  1. 作成したPrefabに「DeleteTime」スクリプトをドラッグ&ドロップしてアタッチします。
  2. インスペクター(Inspector)ウィンドウで、スクリプトの「LifeTime」フィールドに消えるまでの時間を入力して設定します。

3.ランダムに出現させるスクリプト

次に、オブジェクトをランダムに生成するためのスクリプトを作成します。以下の手順で進めましょう:

  1. Projectウィンドウで右クリックして、「Create」→「C# Script」を選択し、スクリプトを作成します。名前は「RandomObject」にしましょう。
  2. 作成したスクリプトをダブルクリックして、コードエディタで開きます。
  3. 以下のコードをスクリプトに追加します。

全体の説明

このスクリプトは、「RandomObject」というクラスを定義しています。このクラスは、ゲームの中で一定の時間ごとにランダムなオブジェクトを生成します。生成するオブジェクトは事前に設定されたリスト(配列)から選ばれます。

各部分の説明

  • ライブラリのインポート
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
  • 最初に、必要なライブラリをインポートしています。UnityEngineはUnityの基本的な機能を使うためのものです。
  • クラスと変数の定義
public class RandomObject : MonoBehaviour
{
    public GameObject[] objectPrefab;
    private int i;
    private float time;
  • RandomObjectクラスはMonoBehaviourを継承しています。MonoBehaviourはUnityでスクリプトを使うための基本クラスです。
  • public GameObject[] objectPrefab;は、生成するオブジェクトのプレハブ(雛形)を格納するための配列です。これはUnityエディタから設定できます。
  • private int i;は、ランダムに選ばれた配列のインデックスを格納するための変数です。
  • private float time;は、時間を管理するための変数です。
  • Startメソッド
void Start()
{
    time = 0.0f;
}
  • Startメソッドは、スクリプトが最初に実行されるときに呼ばれます。ここでは、time変数を0に初期化しています。
  • Updateメソッド
void Update()
{
    time -= Time.deltaTime;
    if (time <= 0.0f)
    {
        time = 2.0f;
        i = Random.Range(0, objectPrefab.Length);
        Instantiate(objectPrefab[i], new Vector3(0, 0, 0), Quaternion.identity);
    }
}
  • Updateメソッドは、毎フレーム呼ばれます。ここでは、time変数を毎フレーム減らしています。
  • timeが0以下になると、以下の処理を行います:
    1. timeを2.0秒にリセットします。
    2. Random.Range(0, objectPrefab.Length)で、objectPrefab配列からランダムなインデックスを選びます。
    3. Instantiate(objectPrefab[i], new Vector3(0, 0, 0), Quaternion.identity);で、選ばれたプレハブを生成します。位置は(0, 0, 0)、回転は初期状態(Quaternion.identity)です。

全体の動き

このスクリプトは、ゲームが始まるとまずStartメソッドでtimeを0に設定します。次に、Updateメソッドが毎フレーム呼ばれ、timeが減少します。timeが0以下になると、2秒にリセットされ、配列からランダムにオブジェクトが選ばれて生成されます。この動作が繰り返されることで、2秒ごとにランダムなオブジェクトが生成される仕組みです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RandomObject : MonoBehaviour
{
    public GameObject[] objectPrefab;
    private int i;
    private float time;
 
     void Start()
    {
        time = 0.0f;
    }
    void Update()
    {   
        time -=Time.deltaTime;
        if(time <= 0.0f)
        {
            time = 2.0f;
            i = Random.Range (0, objectPrefab.Length); 
            Instantiate(objectPrefab[i],new Vector3(0, 0, 0),Quaternion.identity); 
        }
    }
}

スクリプトをオブジェクトにアタッチしよう

次に、作成したスクリプトをオブジェクトにアタッチします。

  1. ヒエラルキー(Hierarchy)ウィンドウで、空のゲームオブジェクトを作成します。右クリックして「Create Empty」を選びます。
  2. 作成した空のゲームオブジェクトに「RandomObject」スクリプトをドラッグ&ドロップしてアタッチします。
  3. インスペクター(Inspector)ウィンドウで、スクリプトの「ObjectPrefabs」フィールドに4つのPrefabをドラッグ&ドロップして設定します。

実行して確認しよう

すべての設定が完了したら、ゲームを実行して確認してみましょう。数秒ごとにランダムなPrefabが表示・非表示されるのが確認できるはずです。

これで、4つの異なるPrefabを使用して、数秒ごとにランダムに表示・非表示させる方法の解説は完了です。ぜひ、いろいろなPrefabを試して、自分だけの楽しいゲームを作ってみてくださいね!

おすすめのアセット

Tons Of Game Assets Bundleは、Unityで使えるゲーム開発用のアセットがたっぷり詰まったパッケージです。2D、3Dゲームの制作に必要な素材がすべて揃っており、初心者からプロまで幅広いユーザーに対応しています。テンプレートやスクリプト、グラフィック、サウンドなど、多彩なコンテンツが含まれており、効率的なゲーム開発をサポートします。

スポンサーリンク
C-BA memo
タイトルとURLをコピーしました