部屋に置いた ランプの形が気に入ったので、窓際とソファの横にも置きたい。あとで明るさを変えるときは、まとめて直せると助かります。
でも入口の1台だけは、目印になる暖かい色にしておきたい。同じ物を使い回しながら、一部だけ違う設定にする。これができるのが Prefab(プレハブ) です。
この記事では、同じランプを2つ置いて、片方だけ変える・まとめて変える・変更を戻す の3つを試します。

この記事でわかること
- 作った部品をPrefabにして使い回す方法
- 1つだけ変えるOverrideと、Apply・Revertの違い
- マテリアルの色を変えると両方変わる理由
- 配布Prefabを更新するときの注意
床のあるシーンから始めます。まだなければ 最初のワールド で作れます。
Projectには原本、Hierarchyにはコピー
Prefabの仕組みは、原本とコピーの関係です。

- Projectにある
.prefabファイル が原本です。設計図だと思ってください - Hierarchyに置いたもの はコピーです。原本を見ながら、その場に現れています
原本を変えると、置いてあるコピー全部が変わります。ここまではイメージどおりです。
Prefabが便利なのは、コピー側だけを個別に変えられる ところです。置いた1つだけ色を変えても、他は元のままです。この「その1つだけの変更」を Override(オーバーライド) と呼びます。
つまり、変更する場所が2つあります。
| 変える場所 | 効く範囲 |
|---|---|
| Hierarchyに置いたもの | その1つだけ(Override) |
| Projectの原本 | 置いてある全部 |
この使い分けが、この記事の中心です。
実践:ランプを2つ置いて、片方だけ変える
小さなランプを作ってPrefabにし、2つ並べます。片方だけ暖色にして、次に両方の明るさをまとめて上げます。
1. ランプを組み立てる
「File → Save As」で WorldLab_Prefabs という別のシーンに保存してから始めます。
Hierarchyの空白を右クリックして「Create Empty」を選び、DeskLamp と名付けます。Transformは全部0、Scaleは1です。これがランプ全体をまとめる親になります。

DeskLamp を右クリックして、子を4つ追加します。表の値は、親の子にした状態で入力するローカルの値 です。
| 子の名前 | 作るもの | Position | Scale |
|---|---|---|---|
Base | Cube | (0, 0.05, 0) | (0.4, 0.1, 0.4) |
Pole | Cube | (0, 0.45, 0) | (0.08, 0.7, 0.08) |
Head | Sphere | (0, 0.92, 0) | (0.24, 0.24, 0.24) |
Bulb | Point Light | (0, 0.92, -0.2) | (1, 1, 1) |
Bulb のLightは、ModeをRealtime、Colorを白、Intensityを 1、Rangeを 2、Shadow Typeを No Shadows にします。
Assets/Materials にStandardのマテリアル LampHousing を作り、Albedoを灰色にして Head に割り当てます。あとで、この色と光の色を別々に扱います。
2. Prefabにして2つ置く
Assets/Prefabsフォルダを作る- Hierarchyの
DeskLamp全体 を、そのフォルダへドラッグする - Projectに
DeskLamp.prefabができ、Hierarchyのほうも青いアイコンに変わる - Hierarchy側の名前を
Lamp_Aに変え、Positionを(-1.5, 0, 1.5)にする - ProjectのPrefabをもう一度Hierarchyへドラッグし、
Lamp_Bとして(1.5, 0, 1.5)に置く
同じ部品から作ったランプが2つ並びました。Aを入口、Bを窓際 に見立てて進めます。
光の違いが見づらければ、シーンのDirectional Lightを一時的に弱めます。元の値は控えておいてください。
3. 片方だけ暖色にする
Lamp_A → Bulb を選び、LightのColorを薄い黄色(FFD780 など)に変えます。Lamp_B は白のままです。
Inspectorを見ると、変えた項目が 太字になって、左に青い線 が付いています。これがOverrideの印です。
Applyは押さずに、シーンを保存してください。この時点で、Aだけが黄色です。
4. 両方まとめて明るくする
今度は、原本のほうを変えます。ProjectのDeskLamp.prefabをダブルクリック してください。原本を編集する画面(Prefab Mode)に入ります。
Bulbを選び、Intensityを1から2に変える。Colorは白のまま- 保存する(Auto Saveがオンなら自動)
- Hierarchy上部の戻る矢印でシーンへ戻る
結果を確かめます。

| 対象 | Color | Intensity |
|---|---|---|
| 原本(DeskLamp.prefab) | 白 | 2 |
| Lamp_A | 黄色 | 2 |
| Lamp_B | 白 | 2 |
Aの黄色は残ったまま、明るさだけ両方に届きました。 Aで変えたのはColorだけなので、Intensityは原本の値をそのまま受け取れます。
これがPrefabのいちばんおいしいところです。共通の設定は原本に任せ、変えたいところだけ個別に持つ。
もしAの明るさが変わらなければ、AのIntensityも以前に触っていないか確認してください。個別に変えた項目は、原本より優先されます。
5. 戻す(Revert)と、原本へ反映する(Apply)
黄色くしたランプを、白へ戻したくなったとします。手で白を入力してもいいのですが、「この1台だけの指定をやめる」 操作があります。

Lamp_A → Bulb を選び、Lightの Colorの項目名を右クリック して Revert を選びます。Aが白に戻り、Overrideの印も消えます。
次は逆をやります。
Lamp_A → BulbのColorを、もう一度黄色に変える- Colorの項目名を右クリックして Apply を選ぶ
- 原本と
Lamp_Bを確認する
今度は原本が黄色になり、色を個別指定していない Lamp_B も黄色になります。
| やりたいこと | 操作 | 変わる場所 |
|---|---|---|
| 入口の1台だけ黄色くする | Colorを変えてシーン保存 | Lamp_Aだけ |
| 入口の1台を元に戻す | Colorを Revert | Lamp_Aが原本と同じに |
| 黄色を共通の色にする | Colorを Apply | 原本と、個別指定のない全部 |
Applyは、シーンを保存するためのボタンではありません。 「他の場所にも同じ変更を反映したいか」で選びます。1つだけ変えたいなら、押さずに保存するだけです。
マテリアルは、Prefabとは別の 共有物
ここで、混同しやすい話をひとつ。
ProjectのマテリアルアセットをHierarchyのオブジェクトに割り当てているので、LampHousing の色を変えると、AもBも同時に変わります。

これはPrefabのOverrideではなく、マテリアルが1つの共有物だから です。Prefabのコピーが2つあっても、両方が同じマテリアルを見ています。
片方だけ表面の色を変えたいなら、マテリアルを複製して別々に割り当てます。
区別のしかたはシンプルです。
- Prefabの設定(位置・明るさ・有効無効など)は、その1つだけ変えられる
- マテリアルの中身は共有物。変えると使っている全部が変わる
「Prefabなのに両方変わった」と感じたときは、たいていマテリアルを触っています。
配布Prefabを更新するとき
Boothなどで手に入れたギミックも、中身はPrefabです。使い方は自分で作ったものと同じですが、更新が来たときに注意 が要ります。

新しいバージョンを上書きすると、原本が置き換わります。あなたがシーン上で調整した設定(Override)は残ることが多いのですが、原本側の構造が変わっていると、参照が外れたり、位置がずれたりします。
安全な進め方はこうです。
- 更新前にプロジェクトのバックアップを取る(VCCの「Make Backup」やフォルダのコピー)
- 更新する
- 動くことを確かめる
- 壊れていたら、バックアップから戻す
もう1つ、配布Prefabの中を勝手に作り替えない ことです。中のオブジェクトを消したり、自分のスクリプトを混ぜたりすると、更新のたびに壊れます。設定を変えるだけに留めておくと、更新に強くなります。
配布物の入手やライセンスの確認は 配布アセットを部屋に置く にまとめています。
おまけ:先に知っておくと良いこと
- Prefabの中のオブジェクトは消せない: シーン上で削除しようとすると拒否されます。消したいときは原本を編集するか、無効にします
- Prefabの中から、シーン上の別のものは参照できない: 原本は特定のシーンに属していないためです。Udonの参照を渡すときは、シーンに置いたコピー側で設定します
- Variant(派生)という仕組みもある: 「基本のランプ」から「大きいランプ」を派生させて、元の変更を受け継ぎつつ一部だけ変える形です。慣れてから使えば十分です
- Unpackすると普通のオブジェクトに戻る: Prefabとのつながりを切る操作です。戻せないので、必要になるまで使いません
.metaファイルを消さない: Unityが参照をたどるための情報です。フォルダをエクスプローラーで移動すると壊れることがあるので、移動はUnityのProjectウィンドウで行います

まとめ
Prefabは、原本とコピーの関係です。
- Projectにあるのが原本、Hierarchyにあるのがコピー
- コピー側の変更は、その1つだけに効く(Override)
- 原本を変えると、個別指定していない全部に届く
- Applyは「原本にも反映する」操作。保存ボタンではない
- マテリアルはPrefabとは別の共有物。変えると使っている全部が変わる
迷ったときの問いかけは、「いま触っているのは、原本かコピーか」 です。ここが分かれば、変更がどこまで届くかも分かります。
同じ部品を並べられるようになったら、入口から席までの導線 で置き場所を考えます。配布の家具を増やすなら 配布アセットを部屋に置く へ戻ってください。