VRChatワールド制作のやり方を調べ始めると、よく出てくる言葉のひとつに「Prefab(プレハブ)」があります。

プレハブ……?
プレハブ小屋のプレハブ……?

語源としてはかなり近いね。
Prefabは “prefabricated” の略で「あらかじめ作られたもの」という意味なの
プレハブ小屋は、あらかじめ工場などで作られた部品を、現地で組み立てて使います。UnityのPrefabも、考え方は似ています。
UnityでいうPrefabは、3Dモデルやマテリアル、Collider、音、アニメーション、スクリプトなどをまとめて、あらかじめ使いやすい状態にしておいた「部品セット」のようなものです。

たとえばBOOTHなどでVRChatワールド向け素材を購入すると、説明書に「PrefabをHierarchyに配置してください」と書かれていることがあります。
これは、あらかじめ設定された部品を、Unityのワールド内に置いて使うという意味です。
でも、Unityを始めたばかりだと、
「Prefabって何?」
「3Dモデルとは何が違うの?」
「Hierarchyに配置するってどういうこと?」
と迷ってしまうかもしれません。
この記事では、Unity初心者向けに、Prefabとは何か、3Dモデルとの違い、VRChatワールド制作でなぜ便利なのかを解説します。
Prefabは「完成した一皿」

まだイメージがわかないです…
「3Dモデル」と「Prefab」はどう違うんですか?

じゃあ料理でたとえてみよう🍳
Blenderなどで作った「3Dモデル(FBX)」と、Unityの「Prefab」との違いがよくわからないという初心者の方も多いと思います。私自身もそうでした。
わかりやすく、ハンバーグでたとえるなら、3Dモデルは「焼き上がったハンバーグ」です。
ハンバーグそのものは完成しています。でも、それだけではまだ食卓に出す一皿としては少し足りませんよね。お皿に盛り付けたり、ソースをかけたり、付け合わせの野菜を添えたりすることで、はじめて「完成した一皿」になります。

Unityでも同じように考えるとわかりやすいです。
基本的に3Dモデルは、ドアや窓、机などのオブジェクトの「形状」を表すものです。
しかし、Unityの中で使うには、マテリアル、Collider、音、アニメーション、スクリプトなどの設定が必要になることがあります。
Prefabは、3Dモデル等にこれら必要な設定を加えて、Unity上に配置しやすくまとめたものです。

つまり、「3Dモデル」を「焼き上がったハンバーグ」とするならば、Prefabはそれをお皿に盛り付けて、ソースをかけ、付け合わせまで添えた「すぐ食卓に出せる完成プレート」のようなものです。

すぐにシーンに並べられるのが「Prefab」なんですね✨

そう!完成プレートをテーブルに置くようにね😋
Prefabとは「再利用できる部品セット」
Prefabのイメージをつかめたところで、もう少し詳しく説明します。
Prefabは、Unity上で使うオブジェクトを、あらかじめ使いやすい形にまとめて保存しておく仕組みです。
たとえば、ワールドに「ドア」を置きたいとします。
ドアは、形(3Dモデル)だけでなく、木や金属のマテリアル、当たり判定用のCollider、開閉用のAnimator、音を鳴らすAudioSource、インタラクト用のスクリプトなどが必要になることがあります。

毎回ひとつずつ設定するのは大変💦

そこでPrefabの出番だよ
これらの設定をPrefabとして保存しておけば、ProjectウィンドウからHierarchyやSceneビューにドラッグ&ドロップするだけで、設定済みのオブジェクトを配置できます。

同じPrefabを複製すれば、同じ設定のドアや蛍光灯を別の場所にも簡単に置くことができます。
Prefabは、再利用できる完成済みパーツのようなものです。
VRChatワールド制作では、見た目だけでなく、音、当たり判定、アニメーション、スクリプトなどの設定が重要になるため、Prefabを使うことで作業を減らし、設定ミスも防ぎやすくなります。
PrefabをSceneに配置したあとは、通常のオブジェクトと同じように、位置、回転、大きさを調整できます。

VRChatワールド向け素材の場合、商品に同梱されているREADMEや説明書に、Prefabの格納場所や配置方法が書かれていることが多いよ
Prefabとインスタンス
PrefabをSceneに配置すると、その配置されたオブジェクトはPrefabのインスタンスになります。
少し難しく聞こえますが、要するに「元のPrefabから作られたコピー」のようなものです。ProjectウィンドウにあるPrefabが元データで、Hierarchyに配置されたものがインスタンスです。

たとえば、Projectウィンドウに「Door.prefab」というPrefabがあるとします。
それをSceneに3つ配置すると、Hierarchyには3つのドアができます。この3つは、それぞれ同じPrefabから作られたインスタンスです。
インスタンスごとに位置や向きを変えることができます。そのため、同じドアPrefabを使って、別々の部屋にドアを配置することができます。
元のPrefabを編集すると、インスタンスにも反映される
Prefabを使う大きなメリットのひとつは、元のPrefabを編集すると、そのPrefabから作られたインスタンスにも変更を反映できることです。
たとえば、Projectウィンドウにある「Door.prefab」から、Scene内に3つのドアを配置していたとします。
あとから「ドアの色を変えたい」「金属部分のマテリアルを変更したい」と思った場合、元のPrefabを編集すれば、同じPrefabから作られたドアにも変更を反映できます。

もしPrefabを使っていなければ、Scene内に置いた3つのドアをひとつずつ修正しなければなりません。3つならまだよいですが、廊下に同じドアを10、20と並べている場合、ひとつずつ設定を直すのは大変な作業です。

気が遠くなりそう…
Prefabを使っていれば、元のPrefabを編集することで、同じ設定を使っているインスタンスをまとめて調整しやすくなります。
これは、同じ素材を何度も使うVRChatワールド制作ではとても便利です。
ただし、インスタンスごとに個別に変更した部分は、そのインスタンスだけの設定として残る場合があります。
たとえば、同じドアPrefabから作ったインスタンスでも、位置や向きはそれぞれ別々に調整できます。
つまりPrefabは、共通部分はまとめて管理しつつ、配置場所ごとの調整もできる便利な仕組みなのです。
まとめ
Prefabとは、Unityで使う再利用できる部品セットのことです。
3Dモデルの見た目だけでなく、マテリアル、Collider、AudioSource、Animator、スクリプトなどをまとめて保存できます。
VRChatワールド制作では、Prefabを使うことで素材を簡単に配置でき、同じものを何度も使いやすくなります。
初心者のうちは、まず次のように考えるとわかりやすいです。
3Dモデルは「焼き上がったハンバーグ」
Prefabは「ソースと付け合わせまで整った完成プレート」
BOOTHなどでVRChatワールド向け素材を購入したときに「Prefabを配置してください」と書かれていたら、ProjectウィンドウからPrefabを探して、HierarchyやSceneビューにドラッグ&ドロップしてみましょう。
Prefabの仕組みがわかると、Unityでのワールド制作がぐっと進めやすくなります。

まずは小さな素材をひとつ配置するところから始めて、少しずつ自分のワールドを作っていこう!



コメント