前回のPrefab In Prefabとは方式が異なる、新しい方法を試してみた。
前回:[Unity]prefabの入れ子構造を可能にする、プレハブのネスト化を試作 その1
有力候補:prefab_in_prefab
■Nested Prefab 2
今回はプレハブ化に辺り特殊な事は行わず、ただ単純に元のプレハブの値を参照してオブジェクトのパラメータを戻す事を可能にしてみた。
要するにプレハブをまとめてプレハブ化した場合でもプレハブ元への参照を破棄せず、元々のプレハブの情報を巻き戻せるようにした。本来であればプレハブ化により元々のプレハブへの参照が切れてしまうのだが、これを残すことでプレハブ化した際にも値を巻き戻せる。
前回のコンセプトは「プレハブのネスト化をエディタ・ランタイムで行う」「プレハブ情報はシーンに保存」がコンセプトだったので、今回は逆の方法を試した感じ。
■使い方
使い方は簡単、ProjectビューのプレハブにAttatchedPrefabをアタッチするだけ。
これで、以降プレハブをアタッチしたプレハブはネスト化しようと何しようとプレハブの参照元の値と同じコンポーネント・同じ値を持つ事になる。
■問題点
残念ながら、これも正解ではなかった。
この方法ではプレハブの構造を維持する事は出来ず、構造を持つプレハブのネスト化を行うことは出来ない(※)。この辺りは構造化の再現を得意とする前回とは逆だ。
(※):全てのオブジェクトを別オブジェクトとして持ち、各々が構造を持つならば一応は可能
まあネスト化の目的が特定のコンポーネント・パラメータを持つ事であれば、この方法で十分かもしれない。複雑なPrefab in prefabを複数持っても一つの値を参照しているし。
それと、この方法は「シーンを見ないとプレハブがアップデートされない」ので注意(もしくは、PIPがアタッチされてる全てのプレハブを見つけ出してPIPのReset Prefabする等)
もし良いアイディアがあれば、コメント欄か@tsubaki_t1まで