新しいプレハブワークフローのご紹介

MADS NYHOLM / UNITY TECHNOLOGIESStaff Software Engineer
Jun 20, 2018|6 分
新しいプレハブワークフローのご紹介
このウェブページは、お客様の便宜のために機械翻訳されたものです。翻訳されたコンテンツの正確性や信頼性は保証いたしかねます。翻訳されたコンテンツの正確性について疑問をお持ちの場合は、ウェブページの公式な英語版をご覧ください。

Unity への追加機能として最も要望の多いのが、プレハブをネストする(入れ子構造にする)機能です。しかしプレハブワークフローについては、それ以外の様々な面においても改善を望まれるユーザーの方が多くいらっしゃることを理解していました。そこで Unity では、再利用性・制御のしやすさ・安全性に重点を置いて、システム全体の改良を行っています。本記事は、今後予定されている変更事項についてご紹介するブログシリーズの第一弾としてお届けします。昨日のUnite Berlin 基調講演に参加された方の中には、 新しいプレハブシステムの搭載されたプレビュー版 Unity ビルドを使ってみた方も多いと思いますが、まだの方はこちらからダウンロードしてください。

まずは、Unity におけるプレハブとは何か、その基礎を再確認してみましょう。簡単に言うとプレハブアセットとは、特定のゲームオブジェクトとその子の、テンプレートのようなものです。プレハブアセットのインスタンスを使用して、特定のゲームオブジェクトの複製をシーン全体に多数作成することができます。あるプレハブアセットに変更が加えられると、そのプレハブのすべてのインスタンスがそれに応じて自動的に更新されます。

私達は、様々なインディーゲーム・AAA ゲームの開発スタジオの方々と話をしながら、現在皆様がプレハブをどのように使用しているか詳細にリサーチしました。そこで明らかになった問題のひとつは、プレハブアセットを編集したい時、シーンを開いてヒエラルキービューにドラッグして編集し変更を適用した後、確実にそれを削除しなければならないということでした。もう 1 つの問題は、プレハブインスタンスのインスペクターに表示される Apply ボタンです。プレハブへの編集の状態がよくわかっていないのに Apply ボタンを押して、プレハブアセットに間違って変更を適用してしまうことがあるということでした。

これらの問題を解決するために、いくつかの新しい機能を追加しました。ネスティングと継承に対応した、後方互換性のあるプレハブバックエンドを実装しました。プレハブインスタンスのプロパティとオブジェクトオーバライドの視覚表示を改善し、異なるレベル(プロパティ毎、コンポーネントあるいはゲームオブジェクト毎、または以前と同様にプレハブインスタンス全体)でのオーバライドの適用が可能になりました。これに加え、Prefab モードの追加によって、プレハブアセットを切り離して編集できるようになりました。

Prefab モード

Prefab モードによって、プレハブに関わる作業が抜本的に変わります。変更をプレハブインスタンスに加えるか、プレハブアセットに直接加えるかが選択可能になりました。

Prefab モードではプレハブアセットの編集操作がよりスムーズになります。構造的な修正も含め、どんな修正をプレハブアセットに加える場合でも、プレハブへのリンクの切断についてたずねるダイアログが表示されなくなりました。Prefab モードを使用すると、後にアセットに適用するためだけにプレハブインスタンスに一時的な変更を加える必要がなくなります。(ただし、オーバーライドとして維持されるべきはずの、その他の以前のオーバーライドが間違って適用されてしまうリスクはあります。)したがって、Prefab モードはプレハブアセットの変更に使用し、プレハブインスタンスのオーバーライドは必要な場合にのみ行うことをお奨めします。また、Apply ボタンでクリックしていくワークフローに関しても、大幅に改善されました。これについては後のブログ記事で詳細をお伝えします!

Prefab モードは、これまでプレハブの編集のために使っていたヒエラルキーとシーンを置き換え、プレハブアセットを分離して表示する場を提供します。ヒエラルキーおよびシーンビューにこのモードの新しいヘッダーが表示されます。また、Prefab モードの背景色は Preferences メニューでカスタマイズ可能です。

Hierarchy アセットと シーンビューのプレハブ

Prefab モードには、以下のいずれかの方法で入れます。

  • プロジェクトウィンドウ内でプレハブをダブルクリックする
  • ヒエラルキーウィンドウで、プレハブインスタンスのルートゲームオブジェクトの隣に新しく表示される、矢印ボタンをクリックする
  • インスペクター内で、プレハブアセットまたはプレハブインスタンスのルートゲームオブジェクトの Open ボタンをクリックする
プレハブアセットの扱い

プレハブをネストできるようにするためには、プレハブのバックエンドに技術的な変更を加える必要がありました。このため、プレハブは実質的に、インポートされるアセットとなりました。つまり、プロジェクトウィンドウ内でのプレハブのゲームオブジェクトの編集はできなくなりました。プロジェクトウィンドウ内で直接編集を行う旧ワークフローとは異なり、Prefab モードでは、どの階層のオブジェクトでも編集でき、行っている作業をシーンビューで確認することもできます。

プレハブインスタンスの扱い

プレハブのネスト機能を提供したことによるもうひとつの影響は、プレハブインスタンスの接続を切断してそのインスタンスに構造的な変更を加えることができなくなったことです。例えばゲームオブジェクトの削除、ゲームオブジェクトの親子関係の変更、Transform の RectTransform による置き換えまたはその逆などです。これらは Prefab モードですべて行うことができます。または、プレハブインスタンスのプレハブアセットへのリンクを完全に削除して単純なゲームオブジェクトにしてから再構築したい場合には、そのプレハブインスタンスを取り除くことも可能になっています。

Prefab ステージ

エディターに「ステージ」という用語が加わりました。これは、他のゲームオブジェクトから分離された一式のゲームオブジェクトを表す概念です。Prefab モード中にはシーンビューの上部にパンくずリストが表示されますが、そのひとつひとつが異なるステージを表します。各ステージは独立した「世界」のようなものです。初期設定では、Main ステージがあります。ここにはすべてのシーン(読み込み済みでヒエラルキー内に表示されているシーン)が含まれています。Prefab モードでプレハブを開くと、そのプレハブのコンテンツ用に Prefab ステージが作成されます。Prefab ステージが開かれた時に、Main ステージのゲームオブジェクトはアンロードされません。

つまり、引き続きゲームビュー内に表示されたままになります。シーンビューとヒエラルキービューには常に現在のステージが表示されます。一番右側のパンくずリストがこれを表します。シーンの含まれた Main ステージに戻るには、シーンビューのパンくずリスト内の「Scenes」ボタンか、ヒエラルキービューの矢印の「戻る」ボタンをクリックしてください。

以下の動画で、新しいワークフローが実際に機能する様子をご覧ください。

新しいプレハブ機能をお試しになりたい方は、プレビュービルドをプレハブページからダウンロードしてください。また、改良版プレハブに関する専用フォーラムでも、詳しい情報や質問・フィードバックをご覧いただけます。

改良されたプレハブワークフローについてのその他の要素に関する詳細は、今後のブログにてお届け予定です。どうぞお楽しみに!

Unite Berlin での改良版プレハブ:今すぐライブ

改良されたプレハブワークフローを実際にご覧になりたい方は、Unite Berlin 講演のライブストリームの YouTube アーカイブをぜひご覧ください。午後5時(ベルリン時間)から開始されるCiro Continisioによる改良プレハブワークフローをご覧ください。その後、Rune Skovbo Johansen と Steen Lund が、実装に関する意思決定の長所と短所を新しいプレハブシステムに技術的に掘り下げるのを支援します (午後 6 時)。講演の編集は後ほど行い、カンファレンス後1か月以内にYouTubeチャンネルにアップロードする予定です。