Unityで普通にメニューからExport Packageすると、自分で作ったTagやLayer、他にもInputの設定なんかはExportに含まれません。そのためデータ保存用としてPackagingしたり他の人に渡す用途の場合、ただExportしてもそのままではImportした側では使えない場合がほとんどだと思います。
で、まずこのExportに含まれない関連はどこに保存されているのかというと、各プロジェクトのフォルダにある”ProjectSettings”フォルダ内です。(ここにUnityメニューのProjectSettingsで設定したものが全て入っている)じゃあExportしたPackageとそのフォルダを一緒にまとめてZipで固めておけば使う側も安心だね!え、なんかそれならもういっそpackageとか作らずプロジェクト丸ごとZipで固めたらよくない?
でもアセットストアを見てるとPackage内にProjectSettingsフォルダが含まれていて、そのアセットをImportすれば勝手にProjectSettingsも上書きしてくれるアセットが確かに存在してます。えーどうやったの?メニューにそんな項目ないよ?
それもそのはずメニューから行うような親切設計にはなっていないのです。私の説明の前に自分で公式のリファレンスを見たほうが手っ取り早いという方用にまずリンクを貼っときます。
ExportPackageOptions.IncludeLibraryAssets
ExportPackageOptions
やり方の詳細。まず何でもいいので自分のわかりやすい名前をつけたC#スクリプトを新規作成してProjectタブでEditorフォルダ内に置きます。アンド以下をコピペ。
1 2 3 4 5 6 7 8 9 10 11 12 |
using UnityEngine; using System.Collections; using UnityEditor; public class Exporter { [MenuItem("Assets/ExportWithSettings")] static void Export () { AssetDatabase.ExportPackage ("Assets/", "test.unitypackage", ExportPackageOptions.Interactive | ExportPackageOptions.Recurse | ExportPackageOptions.IncludeLibraryAssets | ExportPackageOptions.IncludeDependencies); } } |
[MenuItem (“Assets/ExportWithSettings”)]
この部分でUnityメニューのAssetsにExportWithSettingsという項目を作成してます。 メニューの他の場所がいい場合は適宜書き換え。
AssetDatabase.ExportPackage(“Assets/”,…
ここの”Assets/”の部分で書き出す内容を指定。ひとつのプロジェクト丸ごとでなくProjectタブ内の特定のフォルダだけでいい場合は”Assets/hogeFolder”とかそこを指定すればよい。
“test.unitypackage”
Exportされるファイルの名前。まあお好きに。
必要最低限だとこんなもんでしょう。頻繁に使う方は名前とか付け易くしたりとか手を加えたほうがよさげ。メニューから選ぶとExportされたファイルがプロジェクトのフォルダ直下にできています。
ただひとつ気をつけるべきは、良くも悪くも「Import時にProjectSettingsフォルダ内を上書きする」という事。 Import側がzip解凍してファイル放り込むみたいな手間はなくなるけど、知らないでImportすると自分で作っていたTagやらLayerやらInputやらが全部上書きされて消滅します。 特定の設定ファイルだけピンポイントでExportに含ませる、というのも(おそらく)できないので、Physics設定やらPlayer設定やら何やらも全部上書きされます。 Importする時にチェック式で項目を選べるけど、Import側がどれが必要か把握してる場合ばかりではないだろうし。 Export側にできるのはReadMe付けるくらい。 まあそれもとりあえずImportしてからReadMe読もうってなったら意味ないけど。
というわけで一見便利そうだけどあまり使い勝手がよろしくないので使ってません。調べるのにそれなり時間使ったのにね。ていうかもうちょっと洗練してメニューからのExportでUnity自体が普通に機能として付けたほうがいいんじゃなかろうか。
TagやLayerの設定はImport以前にプロジェクト内ですでに設定済みのものを残したまま付け加える形にできたほうが断然使い勝手がいいと思うんだけど、この辺の利便性はUnity本社側はあまり気にしてなさそう。数年前に同じことで困ってる記事とか普通にヒットするし。
あと、アセットストアにProjectSettingsフォルダ含みのImportファイルを提出するのはまったく別の手順です。アセットストアにはAsset Store Toolsを使って提出するわけですが、Category選択を Complete Projects系のカテゴリにするだけで勝手にProjectSettings関連も含まれます。ただこれはあるジャンルのゲームシステム丸々をデモとして提出するとかのカテゴリだからこそ、設定関連も同梱されるということです。普通の規模のアセットを提出する場合に、ProjectSettingsを含ませたいからというだけでこのカテゴリを選ぶのはおそらくダメ。仕方ないので必要最小限のProjectSettings内のファイルをZipで固めてアセットの提出内容に入れておくのが単純な方法のようです。