【VRChat】Prefabで部品を使い回す:片方だけ変える、まとめて変える

作成: 2026-09-08最終更新: 2026-09-09

同じランプを2つ置き、片方だけ変える・元からまとめて変える・変更を戻すを試します。OverrideとApply・Revertの違い、マテリアルを共有すると両方変わる理由を解説します。

部屋に置いたランプの形が気に入ったので、窓際とソファの横にも置きたい。あとで明るさを変えるときは、まとめて直せると助かります。

でも入口の1台だけは、目印になる暖かい色にしておきたい。同じ物を使い回しながら、一部だけ違う設定にする。これができるのが Prefab(プレハブ) です。

この記事では、同じランプを2つ置いて、片方だけ変える・まとめて変える・変更を戻す の3つを試します。

1つのPrefabからランプを使い回し、入口の1台だけ光の色を変える

この記事でわかること

  • 作った部品をPrefabにして使い回す方法
  • 1つだけ変えるOverrideと、Apply・Revertの違い
  • マテリアルの色を変えると両方変わる理由
  • 配布Prefabを更新するときの注意

床のあるシーンから始めます。まだなければ 最初のワールド で作れます。

Sponsored


Projectには原本、Hierarchyにはコピー

Prefabの仕組みは、原本とコピーの関係です。

Projectにある元の部品と、Hierarchyに置いた実体の関係
  • Projectにある .prefab ファイル が原本です。設計図だと思ってください
  • Hierarchyに置いたもの はコピーです。原本を見ながら、その場に現れています

原本を変えると、置いてあるコピー全部が変わります。ここまではイメージどおりです。

Prefabが便利なのは、コピー側だけを個別に変えられる ところです。置いた1つだけ色を変えても、他は元のままです。この「その1つだけの変更」を Override(オーバーライド) と呼びます。

つまり、変更する場所が2つあります。

変える場所効く範囲
Hierarchyに置いたものその1つだけ(Override)
Projectの原本置いてある全部

この使い分けが、この記事の中心です。

Sponsored

実践:ランプを2つ置いて、片方だけ変える

小さなランプを作ってPrefabにし、2つ並べます。片方だけ暖色にして、次に両方の明るさをまとめて上げます。

1. ランプを組み立てる

「File → Save As」で WorldLab_Prefabs という別のシーンに保存してから始めます。

Hierarchyの空白を右クリックして「Create Empty」を選び、DeskLamp と名付けます。Transformは全部0、Scaleは1です。これがランプ全体をまとめる親になります。

DeskLampの下にBase・Pole・Head・Bulbをまとめた構造

DeskLamp を右クリックして、子を4つ追加します。表の値は、親の子にした状態で入力するローカルの値 です。

子の名前作るものPositionScale
BaseCube(0, 0.05, 0)(0.4, 0.1, 0.4)
PoleCube(0, 0.45, 0)(0.08, 0.7, 0.08)
HeadSphere(0, 0.92, 0)(0.24, 0.24, 0.24)
BulbPoint 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つ置く

  1. Assets/Prefabs フォルダを作る
  2. Hierarchyの DeskLamp 全体 を、そのフォルダへドラッグする
  3. Projectに DeskLamp.prefab ができ、Hierarchyのほうも青いアイコンに変わる
  4. Hierarchy側の名前を Lamp_A に変え、Positionを (-1.5, 0, 1.5) にする
  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)に入ります。

  1. Bulb を選び、Intensityを 1 から 2 に変える。Colorは白のまま
  2. 保存する(Auto Saveがオンなら自動)
  3. Hierarchy上部の戻る矢印でシーンへ戻る

結果を確かめます。

原本のIntensityを2にすると両方明るくなるが、Lamp_Aの黄色は残る
対象ColorIntensity
原本(DeskLamp.prefab)2
Lamp_A黄色2
Lamp_B2

Aの黄色は残ったまま、明るさだけ両方に届きました。 Aで変えたのはColorだけなので、Intensityは原本の値をそのまま受け取れます。

これがPrefabのいちばんおいしいところです。共通の設定は原本に任せ、変えたいところだけ個別に持つ。

もしAの明るさが変わらなければ、AのIntensityも以前に触っていないか確認してください。個別に変えた項目は、原本より優先されます。

5. 戻す(Revert)と、原本へ反映する(Apply)

黄色くしたランプを、白へ戻したくなったとします。手で白を入力してもいいのですが、「この1台だけの指定をやめる」 操作があります。

Revertは元へ戻し、Applyは原本へ反映して他にも伝わる

Lamp_A → Bulb を選び、Lightの Colorの項目名を右クリック して Revert を選びます。Aが白に戻り、Overrideの印も消えます。

次は逆をやります。

  1. Lamp_A → Bulb のColorを、もう一度黄色に変える
  2. Colorの項目名を右クリックして Apply を選ぶ
  3. 原本と Lamp_B を確認する

今度は原本が黄色になり、色を個別指定していない Lamp_B も黄色になります。

やりたいこと操作変わる場所
入口の1台だけ黄色くするColorを変えてシーン保存Lamp_Aだけ
入口の1台を元に戻すColorを RevertLamp_Aが原本と同じに
黄色を共通の色にするColorを Apply原本と、個別指定のない全部

Applyは、シーンを保存するためのボタンではありません。 「他の場所にも同じ変更を反映したいか」で選びます。1つだけ変えたいなら、押さずに保存するだけです。

マテリアルは、Prefabとは別の共有物

ここで、混同しやすい話をひとつ。

ProjectのマテリアルアセットをHierarchyのオブジェクトに割り当てているので、LampHousing の色を変えると、AもBも同時に変わります

マテリアルは別の共有物なので、Prefabの個別指定とは効き方が違う

これはPrefabのOverrideではなく、マテリアルが1つの共有物だから です。Prefabのコピーが2つあっても、両方が同じマテリアルを見ています。

片方だけ表面の色を変えたいなら、マテリアルを複製して別々に割り当てます。

区別のしかたはシンプルです。

  • Prefabの設定(位置・明るさ・有効無効など)は、その1つだけ変えられる
  • マテリアルの中身は共有物。変えると使っている全部が変わる

「Prefabなのに両方変わった」と感じたときは、たいていマテリアルを触っています。

Sponsored

配布Prefabを更新するとき

Boothなどで手に入れたギミックも、中身はPrefabです。使い方は自分で作ったものと同じですが、更新が来たときに注意 が要ります。

新しい版を入れたら、自分で変えた所だけ見直す

新しいバージョンを上書きすると、原本が置き換わります。あなたがシーン上で調整した設定(Override)は残ることが多いのですが、原本側の構造が変わっていると、参照が外れたり、位置がずれたりします。

安全な進め方はこうです。

  1. 更新前にプロジェクトのバックアップを取る(VCCの「Make Backup」やフォルダのコピー)
  2. 更新する
  3. 動くことを確かめる
  4. 壊れていたら、バックアップから戻す

もう1つ、配布Prefabの中を勝手に作り替えない ことです。中のオブジェクトを消したり、自分のスクリプトを混ぜたりすると、更新のたびに壊れます。設定を変えるだけに留めておくと、更新に強くなります。

配布物の入手やライセンスの確認は 配布アセットを部屋に置く にまとめています。

おまけ:先に知っておくと良いこと

  • Prefabの中のオブジェクトは消せない: シーン上で削除しようとすると拒否されます。消したいときは原本を編集するか、無効にします
  • Prefabの中から、シーン上の別のものは参照できない: 原本は特定のシーンに属していないためです。Udonの参照を渡すときは、シーンに置いたコピー側で設定します
  • Variant(派生)という仕組みもある: 「基本のランプ」から「大きいランプ」を派生させて、元の変更を受け継ぎつつ一部だけ変える形です。慣れてから使えば十分です
  • Unpackすると普通のオブジェクトに戻る: Prefabとのつながりを切る操作です。戻せないので、必要になるまで使いません
  • .meta ファイルを消さない: Unityが参照をたどるための情報です。フォルダをエクスプローラーで移動すると壊れることがあるので、移動はUnityのProjectウィンドウで行います
metaファイルは参照をたどるための情報

まとめ

Prefabは、原本とコピーの関係です。

  • Projectにあるのが原本、Hierarchyにあるのがコピー
  • コピー側の変更は、その1つだけに効く(Override)
  • 原本を変えると、個別指定していない全部に届く
  • Applyは「原本にも反映する」操作。保存ボタンではない
  • マテリアルはPrefabとは別の共有物。変えると使っている全部が変わる

迷ったときの問いかけは、「いま触っているのは、原本かコピーか」 です。ここが分かれば、変更がどこまで届くかも分かります。

同じ部品を並べられるようになったら、入口から席までの導線 で置き場所を考えます。配布の家具を増やすなら 配布アセットを部屋に置く へ戻ってください。

VRChat このセクションのノート63