Unity PrefabのOverride徹底解説
― Apply / Revert と Prefab Variantの使い分け ―
Prefabとは?
Prefab(プレハブ)は、Unityにおける再利用可能なオブジェクトのテンプレートです。
敵キャラクターやUIボタンなどをPrefab化しておけば、シーンに何度でも同じ構造で配置できます。
- メリット
- 元を直せばすべてのインスタンスが更新
- 作業効率アップ(繰り返し利用が容易)
- 保守性向上(仕様変更に強い)
Override(オーバーライド)とは?
Prefabをシーンに配置して一部を変更したときに記録される差分情報がOverrideです。
Inspectorには「Overrides」ドロップダウンが現れ、変更箇所が青いハイライトで表示されます。
例
Prefab:Scale = (1,1,1)
シーン上のインスタンス:Scale = (2,1,1)
→ これがOverrideとして記録される
Overrideの種類
Unity 2018.3以降、Prefabシステムは柔軟になり、以下のOverrideが扱えます。
- Property Overrides(値の変更:Position, Text, Color など)
- Added Components(新規コンポーネント追加)
- Removed Components(コンポーネント削除)
- Added GameObjects(子オブジェクト追加)
- Removed GameObjects(子オブジェクト削除)
Overrideの操作
HierarchyでPrefabインスタンスを選ぶと、Inspectorの右上に操作メニューが出ます。
- Apply変更をPrefab本体に反映
- RevertPrefab本来の値に戻す
- Apply All / Revert All差分を一括処理
スクリーンショット例では、Query-Chan-SDプレハブのインスタンスに対してAudioSourceやAttackHitDetectorなどが差分として検出されており、Apply / Revertで制御できます。

よくあるハマり
- 変更がPrefabに残ってしまう→ 「Apply」ではなく「Revert」で戻す必要あり
- 追加した子オブジェクトが消える→ Revertを押すと差分が破棄されるため注意
- 複数インスタンスの調整がバラバラ→ 本体Prefabを編集して統一するのが正解
Prefab Variantとの違い
Prefab Variantは、Prefabをベースに新しい派生Prefabを作る仕組みです。
Overrideと似ていますが、役割が異なります。
項目 | Override | Prefab Variant |
---|---|---|
保存先 | シーン内インスタンスの差分 | 新しいPrefabアセットとして保存 |
適用範囲 | そのシーンのインスタンスのみ | プロジェクト全体で再利用可能 |
主な用途 | 一時的な調整や微修正 | 系統の異なるバリエーション管理 |
例 | 同じ敵キャラの体力値だけ変更 | 赤スライム、青スライムなど別Prefab化 |
判断基準
- このシーンだけで特殊調整 → Override
- 別の種類として再利用したい → Prefab Variant
実際のワークフロー例
例1:UIボタン
- 状況:共通ボタンPrefabを使い、シーンごとにボタンラベルを変えたい
- 「スタート」「リトライ」「終了」選択:Override(テキストだけの変更で完結)
- 状況:アプリのテーマごとに見た目や装飾を大きく変えたい選択:Prefab Variant(系統ごとに派生Prefabを管理)
例2:敵キャラクター
- 状況:同じ「スライムPrefab」を各シーンで体力や攻撃力だけ変えたい選択:Override
- 状況:「赤スライム」「青スライム」「ボススライム」など外見や行動まで異なる選択:Prefab Variant
チーム開発での運用Tips
- 共通処理はPrefab化、微調整はOverride
- 系統展開はPrefab Variantで管理
- レビュー時はOverridesパネルを必ず確認(意図しない差分のApplyを防ぐ)
まとめ
Prefab、Override、Prefab Variantを正しく使い分けることで、Unity開発の効率と保守性は大きく向上します。
- Prefab:再利用の仕組み
- Override:シーン単位の差分調整
- Variant:系統の派生Prefab
「共通化」「調整」「派生展開」を意識して切り分けるのが実務のコツです。
ディスカッション
コメント一覧
まだ、コメントがありません