MRが楽しい

MRやVRについて学習したことを書き残す

PrefabとPackageを利用してプロジェクト間でオブジェクトをコピーする

本日は Unity の技術調査枠です。
今回は以下の記事を参考に prefab と package の作成方法を学びます。
techacademy.jp
blog.k-kansei.com

今回やりたい事として例えば以下のような例です。
一つに既に作成した映像プロジェクトのシーンがあり、それを Sharing 用プロジェクトのシーンに取り込みたいという場合です。
・映像プロジェクトのシーン
f:id:bluebirdofoz:20170827230825j:plain
・Sharing 用プロジェクトのシーン
f:id:bluebirdofoz:20170827230834j:plain

Assetsを丸々コピーすればリソースは取得できますが、その場合シーン内に構成したオブジェクトは取得できません。
そんなときに利用するのが prefab ですね。
例えばシーン内の ViewObject をそのまま流用したい場合、これを prefab 化します。

まず project ビュー上で右クリック Create -> Prefab を選択します。
f:id:bluebirdofoz:20170827230846j:plain

すると prefab ファイルが生成されるのでそこに prefab 化したいオブジェクトをドラッグするだけです。
f:id:bluebirdofoz:20170827230856j:plain

ただし prefab ファイルはあくまで構成の情報を持つファイルなので各リソースは本ファイルに含まれていません。
例えば、prefab ファイルだけ別プロジェクトにコピーしてもオブジェクトに含まれる3Dモデルなどは表示されません。
prefab が参照するリソースファイルもプロジェクトにコピーしてやる必要があります。

よって次は package を使ってみます。
Assets ファイルのコピーでもプロジェクトへのコピーは可能ですが、package を用いれば、それらを一つのファイルにまとめられます。

package 化したいフォルダを選択して右クリック ExportPackage で出力可能です。
このとき、prefab で利用しているファイル群を必ず含めるようにします。
f:id:bluebirdofoz:20170827230905j:plain
出力すると unitypackage ファイルが作成されます。

後は unitypackage ファイルをダブルクリックして反映したいプロジェクトでインポートを行います。
f:id:bluebirdofoz:20170827230913j:plain

prefab ファイルをシーンに反映すると、以下の通り、リソースを含めた状態で適用されます。
f:id:bluebirdofoz:20170827230920j:plain
プロジェクトからプロジェクトへオブジェクトのコピーを行うことができました。