Appearance
第03回 Prefabとインスタンス
前回: 第02回 シーンとゲームオブジェクトの操作 / 次回: 第04回 物理と衝突判定
前回の振り返り
Scene と GameObject の基本を確認しました
Sceneがゲーム内の1つの場面を表す単位であることを確認しましたGameObjectとComponentを組み合わせて作る考え方を確認しましたTransformを使って配置、回転、大きさを調整しました- 小さな場面を組み立てながら、
HierarchyとInspectorの使い方に慣れました - 今回は、作ったものを再利用しやすい形に整理する方法を学びます
今回の目的
作ったものを整理して使い回せるようにする
Prefabの意味を説明できるようにする- Prefab を作成し、Scene に配置できるようにする
InstanceとOverrideの考え方を理解する- 同じ要素を効率よく管理する必要性を理解する
今回の授業内容
Prefabとインスタンス
Prefabとは何かに触れる- 再利用が必要な理由を扱う
- 実習1: Prefab を作成して配置する
Instanceの意味に触れるOverrideとApplyの考え方を扱う- 実習2: 配置ごとの差と整理方法を確認する
Prefab と再利用
同じものを何度も 使える形にします
Unityらしい 制作フローの基本
Prefab とは
GameObject を再利用できる部品として保存したものです
- Prefab は Prefabrication の略で、 あらかじめ作っておくという意味があります
- 見た目、Component、当たり判定などをまとめて保存しておくことで 同じ設定のオブジェクトを何度も再利用できます
- Scene 上で作った GameObject は簡単に Prefab 化できます エディター上で作ったものを再利用できる部品にしたいときに便利です
- Prefab は、ゲーム内の要素を部品化して 効率よく組み立てるための仕組みです
作成の基本手順
Scene 上のオブジェクトを保存します
- Scene 上で GameObject を作る
- 見た目や当たり判定を調整する
Projectウィンドウへドラッグする- Prefab として保存する
- 必要な数だけ Scene に配置する
実習1: Prefab を作って配置する
1つ作って、複数置いてみる
- Scene 上で
Cubeや障害物用オブジェクトを1つ作る - 色や大きさを調整する
Projectにドラッグして Prefab 化する- 同じ 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 を触ってみる
- 作成した Prefab を Scene に複数配置する
- 位置だけを変えて配置する
- 一部の Instance の色や大きさを変更して違いを確認する
- それが元の 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 の違いを意識すると管理しやすくなります
- 小さなゲームでも、早い段階から整理して作ることが重要です