3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

UnityPackageExporterを作るときに気をつけること [ExportPackage][ExportPackageOptions]

Last updated at Posted at 2019-06-16

はじめに

UnityPackageを出力するEditor拡張を作成しました
https://github.com/gatosyocora/gsPackageExporter

公式リファレンス以外にUnityPackageを操作するスクリプトを紹介した記事があまりなかったので,
製作途中で詰まったところなどをまとめました

開発環境

Unity 2017.4.15f1
Visual Studio 2017
Windows 10 Home

UnityPackageを出力するAPIが公式で提供されている

AssetDatabase.ExportPackage

public static void ExportPackage (string assetPathName, string fileName);
public static void ExportPackage (string assetPathName, string fileName, ExportPackageOptions flags);
public static void ExportPackage (string[] assetPathNames, string fileName, ExportPackageOptions flags= ExportPackageOptions.Default);
  • string assetPathName:出力するアセットのパス(複数可, Assetsフォルダからの相対パス)

      e.g. Assets/Hoge/piyo.mat, Assets/Foo
  • string fileName:出力するUnityPackageのファイル名(ドライブからの絶対パス)

      e.g. C:/Users/ユーザー名/Desktop/sample.unitypackage
  • ExportPackageOptions flags:その他オプション設定

Exportするときのassetの扱い等を第三引数で設定できる

ExportPackageOptions
OR演算子( | )を使うことで複数のオプションを同時に設定できる
画像は出力したUnityPackageを他のプロジェクトにインポートしようとしたときに表示されるものの例

Default

assetPathNameで指定されたassetのみを出力する
assetPathNameがフォルダだけの場合, 空フォルダがExportできないため何も含まないUnityPackageが出力される

Interactive

非同期的に実行する
書き出し中のプログレスバーが表示されて, 書き出しが完了すると出力されたファイルが表示される

Recurse

assetPathNameがフォルダのパスの場合, それ以下に含まれるすべてのアセットを出力する
image.png

IncludeDependencies

assetPathNameのアセットで使われているアセットも出力する
fbxを出力しようとした場合, 使われているMaterialやそのシェーダー, テクスチャなども出力される
prefabを出力しようとした場合, 使われている3Dモデルのfbxやスクリプト, アニメーションファイルなどの出力される
image.png

IncludeLibraryAssets

assetPathNameで指定されたアセットとLibraryフォルダ以下のアセットが出力される
また, UnityEditorに本来から含まれるdllファイルやプロジェクトの設定ファイルも含まれる
image.png
image.png

注意点

  • 空フォルダは出力されない
  • 出力するアセットが多いと書き出し終了までそこそこかかる(処理状況を見るためにInteractive推奨)
  • fileNameに存在するファイル名を指定すると上書きされてしまう(これで既存のフォルダを指定してしまいフォルダが消滅しました...)

まとめ

個人的にはInteractiveとRecurseと場合によってIncludeDependenciesを使ってIncludeLibraryAssetsは非推奨です
でもしっかり作りこみたい場合は出力したいアセットのパスをすべて取得してInteractiveを使うのが良さそうです
(自作したExporterでは書き出し前に出力するアセット一覧を表示したかったのですべてパスを取得してInteractiveを使ってます)

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?