いんでぃーづ

ゲームメインのブレブレブログ。ゲーム,Unity,デザイン,UI/UX

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はいずれネスト化にも対応するとのことですが、そこまで待てない人はぜひ!


“Unity” and Unity logos are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere, and are used under license.


Amazon.co.jpアソシエイト


免責事項

当サイトの広告バナー、リンクによって提供される情報、サービス内容について、当サイトは一切の責任を負いません。

また、当サイトの情報を元にユーザ様が不利益を被った場合にも、当サイトは一切の責任を負いません。

すべて自己責任でお願いします。