導入
弾・敵・アイテムのように「同じものを実行中に何度も生成」したいとき、プレハブ(設計図として保存したGameObject)をInstantiateで複製します。「クラス→オブジェクト」の、Unity版です。
図解
flowchart LR
PF["プレハブ『弾』<br/>(設計図)"] -->|Instantiate| B1["弾インスタンス1"]
PF -->|Instantiate| B2["弾インスタンス2"]
PF -->|Instantiate| B3["弾インスタンス3"]
style PF fill:#e1f5fe
サンプル(Unity C# ― 読み物)
using UnityEngine;
public class Gun : MonoBehaviour
{
// Inspector でプレハブ(弾)を割り当てる
public GameObject bulletPrefab;
void Update()
{
// スペースキーで弾を1発生成
if (Input.GetKeyDown(KeyCode.Space))
{
// プレハブから実体を複製(位置・回転を指定)
Instantiate(bulletPrefab, transform.position, Quaternion.identity);
}
}
}
- プレハブは「設定済みGameObjectを設計図として保存したもの」
Instantiate(プレハブ, 位置, 回転)で複製(=newのUnity版)Input.GetKeyDown(KeyCode.Space)は「押した瞬間」に1回だけtrue(GetKeyは押している間ずっと)- 生成しっぱなしだと増え続けるので、弾は一定時間で
Destroyするのが定石
Unityで試す
- 弾用のGameObjectを作ってプレハブ化し、
GunスクリプトのbulletPrefabに割り当てる - 再生してスペースキーで弾が生成されることを確認
- 生成した弾に「数秒後に自分を
Destroyする」スクリプトを付けて、増え続けないようにする
まとめ
- プレハブは再利用可能なGameObjectの設計図
Instantiateで複製(newのUnity版)、Destroyで破棄GetKeyDownは押した瞬間、GetKeyは押している間
次回: Unityでの設計——データとロジックの分離です。