メインコンテンツまでスキップ

Prefab

一連のオブジェクトやコンポーネントに関する情報が1つにまとめられた設計図のようなもの

なに?

プレハブ(Prefab: 予め組み立てられた)とは、一連のオブジェクトやコンポーネントに関する情報が1つにまとめられた設計図のようなものです。プレハブはある1つのまとまりを「再利用」したいような場面で便利です。

プロジェクトウィンドウヒエラルキーウィンドウにおいては青色の立方体のようなアイコンで表示されているもの、および青文字の子オブジェクトが該当します。

プレハブの特徴として、インスタンス化が挙げられます。これは、普段の編集モードのヒエラルキーウィンドウでは青文字で表示されていますが、プレイモードにするとプレハブの対象だったオブジェクトが白文字に変わったことが分かるかと思います。このとき、設計書(プレハブ)のデータを基に実体となるGameObjectが生成されることを「インスタンス化された」と言います。一般的なゲーム開発においては、例えば「自機から同じ弾が絶えず連射される」場合など、1つの弾を予めプレハブ化しておき、複製するような感覚でインスタンス化していくような使われ方が想定されます。ですが、アバター改変においては任意のC#スクリプトを書いて実行することが制限されていることもあって、インスタンス化を意識する機会はあまりないかもしれません。

アバター改変におけるメリットとして、「衣装ごとにアバターのオブジェクトを分けて管理している場合において、共通する変更を入れる時の手間が大幅に省ける」ことが挙げられます。

たとえば、元となるアバター素体があって、そこに着せる衣装として「制服」、「カジュアル衣装」、「寝間着」があったとします。衣装ごとにアバターを分けて作り、それぞれアップロードをします。その後、「共通でヘアアクセサリーを付けてみようかな…?」と考えたとします。

この場合、プレハブを個別に用意してない、あるいはUnpackしている場合は用意した衣装の個数分、今回であれば3体分にヘアアクセサリーを付ける作業が発生します。ところが、予めアバター素体ようにプレハブを用意していた場合、プレハブデータを直接編集し、そこにヘアアクセサリーを付けるだけで3体分への反映が完了します。