読者です 読者をやめる 読者になる 読者になる

いんでぃーづ

個人でゲーム開発してる上で吸収したモノたち紹介。UnityからGIMPまでなんでも。デザインとかゲーム論まで語っちゃうよ的なアレ。

MENU

Unity Asset : プレハブを入れ子にできる Prefab Evolution

{スポンサーリンク}
{スポンサーリンク}

Unityではプレハブを入れ子構造にできません。

たとえばプレハブを二つ作成して以下のようにシーンに配置します。

このとき、Prefab1にたいしての変更をApplyすると、以後Prefab2を変更してもアセットに反映されなくなってしまいます。

それを解決するのがPrefab Evolution です。

アセットをインポートするだけで準備は完了です。

使い方

Prefabをネスト可能にする

アセットをインスペクタで見ると、”Allow this prefabs to be nested”というボタンが追加されています。
このボタンを押すと”Evolve Prefab”というスクリプトがアセットに追加され、ネスト(入れ子)が可能になります。

ネスト可能なオブジェクトには、ヒエラルキービューで緑のキューブマークがつきます。

Prefabをネストして保存する

Prefab1の中にPrefab2をネストし、Prefab1のApplyボタンを押してみます。

Prefab2のキューブマークが黄色になりました。
ネスト可能プレハブを別プレハブにネストして保存すると、黄色のマークになります。

プロジェクトビューでは以下のように保存されます。

ネストプレハブを更新する

この状態でPrefab2を更新する際には少しコツが要ります。

残念ながら、ネストプレハブ(黄色のキューブ)を更新しても、元のプレハブには変更が適用されません
前図で言うと、Prefab1内のPrefab2を更新してApplyしても、Prefab2の元プレハブはなにも変わりません。
Prefab2を更新したい場合、以下の二つの方法があります。

Prefab2をプロジェクトビューで選択し、インスペクタで直接変更する

Prefab2をシーンに追加し、変更してApplyボタンを押す

継承関係のプレハブを作る

PrefabEvolutionには、もう一つ、"継承関係のプレハブを作る"という面白い機能があります。

これはオブジェクト指向プログラミングの継承と似た概念で、継承元(親プレハブ)の変更を継承先(子プレハブ)すべてに適用できたり、逆に子プレハブのみを変更させることができます。

子プレハブを作る場合、インスペクタビューのMenuボタンからCreate Childをクリック。

もちろん、親プレハブは”Allow this prefabs to be nested”を押してネスト可能にしておく必要があります。

 ステージを作るときに便利

例えば街を作るとき。
街ごとプレハブにしたいけど、同じビルを使いまわしたい。変更したら全てに適用したい。
という場合などに便利です。

ネストプレハブはいつかUnityで対応するんじゃないかとずっと思ってるんですがしないですね。
かゆいところに孫の手という感じのアセットです。

Unityはいずれネスト化にも対応するとのことですが、そこまで待てない人はぜひ!

Amazon.co.jpアソシエイト