Unity 2020.1 では、シーンのコンテキストから離れることなくプレハブモードに入ることができます。新しいデフォルトでは、シーン内のインスタンスを介して Prefab アセットを開くと、背景がグレーアウトされた状態でプレハブを編集できるようになりました。
Unity 2018.3 でプレハブモードを導入した時点で、プレハブアセットを単独で編集することが容易になりました。しかし、この段階のプレハブモードは、インスタンスが置かれているコンテキストに結び付けてプレハブアセットを編集する能力が高くはありませんでした。
Unity 2020.1 では、Prefab Mode in Context と呼ばれるプレハブワークフローの改善を導入しています。これまでと同様に、プレハブモードではインスタンスではなくプレハブアセット自体を編集しますが、加えてコンテキストが同時に表示されます。
Prefab Mode in Context を使って編集するためにプレハブを開くと、デフォルトではコンテキストはグレーアウトされますが、通常通りの表示や、あるいはまったく表示しないように切り替えることも簡単にできます。Prefab バーの「Context:」コントロールを使用して、以下の任意の状態に設定することができます。
Prefab Mode in Context で編集するためにプレハブを開いたとき、実際にはシーンからプレハブインスタンスを非表示にして、代わりにプレハブアセットの内容を表示するということを行っています。このようにしてプレハブアセットをプレハブのインスタンスと同じ位置に表示します。
ルートのトランスフォームの位置と回転のプロパティは編集できないようになっています。これは、位置と回転がインスタンスが持っているものと同じ値になるように一時的にパッチが当てられているためです。そのため、プレハブアセットはワールド座標において正しい位置に表示されます。これはプレハブ自身の値ではなく、可視化のために使用される一時的な値なので、この値を編集しても意味がありません。ルートのトランスフォームの位置や回転を編集する必要がある場合は、プレハブを単独で開くときに編集できます。
ルートのトランスフォームのプロパティとは別に、プレハブのインスタンスでは、他のプロパティをオーバーライドすることができ、そのためにインスタンスの元になっているプレハブアセットと比較して外観が大幅に変わることがあります。これらのオーバーライドされた値は、Prefab Mode in Context で、Prefab バーの「Show Overrides」トグルを有効にすることでプレビューすることができます。
プレハブのインスタンスからオーバーライドされた値を表示するプロパティは編集できません。なぜなら、表示されている値はプレハブアセットが実際に持っている値ではなく、一時的に可視化したものにすぎないからです。「Show Overrides」トグルをオフにすることで、プロパティのプレハブ自身の値を表示したり編集したりできるようになります。
この新機能は、レベルデザインや UI(uGUI)の作業に特に役立つように思われます。UI のプレハブを使用する際、プレハブについている親の RectTransform が、Prefab Mode in Context でシーン内で表示されるときと同じサイズとなるためです。つまり、UI のプレハブは Prefab Mode in Context とシーン内とで同じサイズと外観を維持するということで、これにより、UI のプレハブに含まれるさまざまな要素を調整する際に、デザイナーはより良い参照情報を得ることができます。
本記事で説明したことの詳細については、ドキュメント Editing a Prefab in Prefab Mode を参照してください。また、エディターとチームのワークフローのページで、他の改善点についてもご覧いただけます。
Prefab Mode in Context がプレハブ編集のワークフローで役立つツールになることを期待しています。また、皆様からのご意見を Prefabs フォーラムにお寄せください。
Is this article helpful for you?
Thank you for your feedback!