プレハブ(Prefab)について

ここではUnityの「プレハブ(Prefab)」と「プレハブバリアント(Prefab Variant)」について説明します。

※プレハブの実際の作り方については「プレハブの作り方・編集方法」をご覧ください。


※この記事で使用しているUnityのバージョン:Unity2019.1

プレハブ(Prefab)とは?

プレハブ(Prefab)は一言でいうと「ゲームオブジェクトの雛形」です。

例えば、下の図のようなCubeをたくさん作りたい場合があるとしましょう。

キューブ

ここですぐに思いつく方法はこのCubeを複製していく方法だと思います。しかし、そのように単純に複製した場合、例えばすべてのCubeに模様を付けたくなったら一つ一つ手作業で変更しなければなりません。これはとても面倒です。

単純に複製した場合

単純に複製した場合、一つ一つ手作業で変更しなければならない

そこでプレハブの出番です。プレハブを作っておくと、プレハブをコピーして作ったオブジェクト(※インスタンスと呼びます)には元のプレハブの変更が反映されます。

プレハブとインスタンスの関係(1) プレハブとインスタンスの関係(2)

先ほどの例でいえば、あらかじめ元のCubeをプレハブ化しておけば、そのCubeに模様を付けたときにインスタンスのCubeすべてに模様が出るという感じです。

元のプレハブを変更した場合

元のプレハブを変更すれば即座にすべてのインスタンスに変更が反映される

このようにプレハブは少しややこしい概念ですが、使いこなせると非常に便利なので必ず理解しておきましょう。

プレハブバリアント(Prefab Variant)について

さて、Unity2018.3あたりでプレハブ機能がアップデートされて「プレハブバリアント(Prefab Variant)」という概念が追加されました。これは簡単に言えば「あるプレハブのインスタンスをさらにプレハブ化できる」というものです。下の図を見てください。

プレハブとプレハブバリアントの関係

図の場合、元のプレハブは白い四角です。例えばそのプレハブのインスタンスを作り、色を赤に変更したとします。このインスタンスをプレハブ化したものがプレハブバリアントです。

プレハブバリアントは元のプレハブの特徴を引き継ぎつつも、独自の特徴を持つことができます。そして元のプレハブが変更された場合、インスタンスと同じようにバリアントにも変更が適用されますが、バリアント独自の特徴は変更されません。

上の例で言うと、例えばおおもとのプレハブを青色に変更したとしても、赤いプレハブバリアントは赤のままというわけです(この場合は「赤い」というのがバリアント独自の特徴)。ただし、おおもとのプレハブが丸になった時はバリアントも丸になります。

この辺は非常にややこしいので理解しづらいと思いますが、分かるととても便利なのでぜひ理解しておきましょう。