アクションゲームでは、同じモンスターをたくさん配置することがあります。
たくさん配置したあと、「HP をもっと増やしたい」「大きさを変えたい」など変更点が出てくることもあるでしょう。
そんなとき Unity のプレハブを使うと一括変更ができて便利です。
※ Unity は 2021.3.14f1、OS は Windows 10 です。
プレハブって何?
公式の説明にあるように、プレハブはひな型(テンプレート)です。
プログラムのクラスとオブジェクト、たい焼き屋さんの型とたい焼き、プレハブとインスタンスはそれに似た関係です。
プレハブがない場合、舞い落ちる「桜の花びら」をたくさん作るのはとても面倒です。
桜の花びらの画像ファイルをシーンに配置し、そのゲームオブジェクトに舞い落ちる動作を行うプログラムを付加する作業を繰り替えす必要があります。
しかも、速度を修正したい場合には、全ての「桜の花びら」のゲームオブジェクトの速度の設定を個別に全部変えなければいけません。
そんな面倒を解決するのがプレハブです。
プレハブをシーンに配置するだけで、プレハブと紐づいたインスタンス (実体) が簡単に作られます。
1 つのインスタンスの設定を変更して適用するだけで、同じプレハブの全てのインスタンスに一括で適用されます。
プレハブを作る
前回の「【Unity 2D】DOTween 無料版で少しずつ画像の向きを変える」に引き続き、「桜の花びら」のゲームオブジェクトを用います。
Hierarchy ウィンドウにある「桜の花びら」という名前のゲームオブジェクトを Project ウィンドウの保存したフォルダ内にドラッグ&ドロップします。

HIerarchy ウィンドウのゲームオブジェクトを Projcet ウィンドウにドラッグ&ドロップしてプレハブを作ります。
これでユラユラ舞い落ちる「桜の花びら」のゲームオブジェクトのプレハブが作成できました。
試しに2つほどプレハブのインスタンスをシーンに配置してみましょう。
そのためには、先ほど作ったプレハブを Project ウィンドウから Scene ウィンドウのシーンにドラッグ&ドロップします。
※ Scene 以外にも Hierarchy ウィンドウにドラッグ&ドロップすることもできます。

Project ウィンドウから Scene ウィンドウへプレハブをドラッグ&ドロップしインスタンスを作ります。
同じプレハブから3つのインスタンスが作成されシーンに配置出来ました。
※ 2 つだけと思うかもしれませんが、最初にプレハブを作った時点で、そのもとになった「桜の花びら」ゲームオブジェクトもプレハブのインスタンスになっています。
テストプレイ
再生ボタンを押してテストプレイしてみると、「桜の花びら」プレハブの 3 つのインスタンスが同じ動きをしました。

「桜の花びら」プレハブの 3 つのインスタンスがテストプレイで同じ動きをしました。
インスタンスのサイズを一括変更する
桜の花びらをたくさん配置するためにサイズを小さくします。
「 3 つくらいなら 3 回同じ修正をすれば良い」という考えもありますが、もっとたくさん配置したときのことを考えてプレハブの機能を活かした修正をしてみましょう。
※ Inspector ウィンドウでプログラムの Speed を変えた際も同様に一括変更できます。
プレハブを変更する
プレハブの Scale などを変更することで、全てのインスタンスがその影響を受けます。
※ Position のように影響をうけない項目もあります。

「桜の花びら」プレハブの拡大率を Inspector ウィンドウで変更すると全てのインスタンスが一括変更されます。
1 つのインスタンスを変更する
シーンに配置されたインスタンスを変更する場合は、他の同じプレハブのインスタンスは影響をすぐには受けません。
もしも、 1 つのインスタンスへ行った変更を他の同じプレハブのインスタンスに適用したい場合は Inspector ウィンドウ右上の [Overrides] ドロップダウンを押します。

1つのプレハブインスタンスのサイズを変更後 Overrides で Apply All を選択します.
[Overrides] ドロップダウンで [Apply All] ボタンを押すとその変更が、全て同じプレハブのインスタンス及びプレハブ自身にも適用されます。
[Revert All] ボタンを押した場合は、インスタンスの変更が取り消されプレハブと同じ設定に戻されます。

「桜の花びら」インスタンスのサイズをシーンで変更し Override で Apply ボタンを押すとプレハブとインスタンスが一括変更されます。
同じ内容のゲームオブジェクトをたくさん配置する場合、ただコピーするのではなく、プレハブを作り、たくさんのインスタンスを作ったほうが変更の際に便利です。
コメント