Skip to content

第03回 Prefabとインスタンス

前回: 第02回 シーンとゲームオブジェクトの操作 / 次回: 第04回 物理と衝突判定

前回の振り返り

Scene と GameObject の基本を確認しました

  • Scene がゲーム内の1つの場面を表す単位であることを確認しました
  • GameObjectComponent を組み合わせて作る考え方を確認しました
  • Transform を使って配置、回転、大きさを調整しました
  • 小さな場面を組み立てながら、HierarchyInspector の使い方に慣れました
  • 今回は、作ったものを再利用しやすい形に整理する方法を学びます

今回の目的

作ったものを整理して使い回せるようにする

  • Prefab の意味を説明できるようにする
  • Prefab を作成し、Scene に配置できるようにする
  • InstanceOverride の考え方を理解する
  • 同じ要素を効率よく管理する必要性を理解する

今回の授業内容

Prefabとインスタンス

  • Prefab とは何かに触れる
  • 再利用が必要な理由を扱う
  • 実習1: Prefab を作成して配置する
  • Instance の意味に触れる
  • OverrideApply の考え方を扱う
  • 実習2: 配置ごとの差と整理方法を確認する

Prefab と再利用

同じものを何度も 使える形にします

Unityらしい 制作フローの基本

Prefab とは

GameObject を再利用できる部品として保存したものです

  • Prefab は Prefabrication の略で、 あらかじめ作っておくという意味があります
  • 見た目、Component、当たり判定などをまとめて保存しておくことで 同じ設定のオブジェクトを何度も再利用できます
  • Scene 上で作った GameObject は簡単に Prefab 化できます エディター上で作ったものを再利用できる部品にしたいときに便利です
  • Prefab は、ゲーム内の要素を部品化して 効率よく組み立てるための仕組みです

作成の基本手順

Scene 上のオブジェクトを保存します

  1. Scene 上で GameObject を作る
  2. 見た目や当たり判定を調整する
  3. Project ウィンドウへドラッグする
  4. Prefab として保存する
  5. 必要な数だけ Scene に配置する

実習1: Prefab を作って配置する

1つ作って、複数置いてみる

  1. Scene 上で Cube や障害物用オブジェクトを1つ作る
  2. 色や大きさを調整する
  3. Project にドラッグして Prefab 化する
  4. 同じ Prefab を Scene に複数配置する
  • まずは「1つ作る」より「同じものを複数置ける」ことを確認してください

Instanceとは

Prefab を Scene に置いた実体です

  • 同じ Prefab から複数の Instance を作ることができます
  • 同じ Prefab から、位置や一部の設定だけ変えた Instance を作ることができます
  • いわゆるコピペとは異なり、元の Prefab とつながっているため Prefab を更新すれば全ての Instance に反映されます

  • 同じ敵 Prefab を複数の場所に置く
  • 同じコイン Prefab をたくさん並べる

Prefab の Override

Instance 側で変更した内容は Override として扱われます

  • Instance 側だけで変更した内容は Override として扱われます Override は上書き、乗っ取りの意味です 元の Prefab を部分的に上書きしている状態を表します
  • 変更を元の Prefab に反映したいときは Apply を使います その場だけの変更にしたいなら、そのままでかまいません
  • うっかり Apply すると全ての Instance に変更が反映されてしまいます 本当に Apply が必要かはよく考えてから適用しましょう

実習2: 配置ごとの差を確認する

Instance と Override を触ってみる

  1. 作成した Prefab を Scene に複数配置する
  2. 位置だけを変えて配置する
  3. 一部の Instance の色や大きさを変更して違いを確認する
  4. それが元の Prefab に反映されるかどうかを確認する
  • 「元を変えたのか、その場だけ変えたのか」を説明できるようにしてください

コードから Prefab を実体化する

  • ゲーム中に敵や弾を出すときには、あらかじめ Prefab を作っておいて スクリプトから呼び出して実体化するのが一般的です
  • ちょっと難しい概念ですので、今回はコード例を見てイメージをつかむ程度で十分です
cs
using UnityEngine;

public class Spawner : MonoBehaviour
{
    public GameObject prefab;

    void Start()
    {
        Instantiate(prefab, new Vector3(0, 1, 0), Quaternion.identity);
    }
}

Unity 作業の注意点

整理しながら作業する習慣をつけましょう

  • オブジェクトをコピーして配置していくと、 Cube (1) Cube (2) のような名前が増えていきます
  • そのままにしておくと、それぞれのオブジェクトの役割が分かりにくくなります オブジェクトの数が増えてきたら役割が分かる名前をつけて整理しましょう
  • ファイルやオブジェクトの数が増えるほど、 後から探すのが大変になります Project 内のファイルも、フォルダ分けをして整理しましょう

今回のまとめ

今日のポイント

  • Prefab は再利用可能な部品です
  • Instance を配置してゲームを効率よく組み立てます
  • Override と Apply の違いを意識すると管理しやすくなります
  • 小さなゲームでも、早い段階から整理して作ることが重要です

おつかれさまでした!

次回予告 第04回 物理と衝突判定

当たり判定が入れば 一気にゲームに 近づきますぜ