Unity の unitypackage 作成を半自動化する
自分で作ったライブラリを unitypackage にするとき、毎回手動 で Asset を選択していくのは面倒なので、 スクリプト でできる方法を調べた。
概要
- スクリプトで unitypackage を書き出す
- 書き出したいファイルを定義して、書き出しを簡単にする dddnuts/UnityPacker: Export Unity package を作った
基本的なこと
スクリプトで unitypackage を書き出す
AssetDatabase.ExportPackage
メソッドを使うと、.unitypackage を書き出すことができる。
AssetDatabase.ExportPackage(assetPathNames, fileName, ExportPackageOptions.Recurse);
API ドキュメントに書いてなかったポイントがいくつかある。
- assetPathNames は
Application.dataPath
からの相対パスにする - fileName も
Application.dataPath
からの相対パスにする - fileName は拡張子
.unitypackage
まで含む
unitypackage を書き出すスクリプトを作った
dddnuts/UnityPacker: Export Unity package を作った。
unitypackage に含めたいファイルやディレクトリをリストした pack ファイルを用意しておくと、 キーボードショートカットで unitypackage を書き出せる。ついでにソースも直接書き出せるようにした。
ショートカット | できること |
---|---|
Cmd + E | unitypackage を書き出す |
Cmd + Shift + E | ソースを書き出す |
MyApp.pack
Assets/MyApp/Scripts/Foo.cs
Assets/Plugins/iOS/MyApp
のような pack ファイルを用意してプロジェクトのどこかに入れておけば、以下のようなディレクトリ構成で書き出す。
Packages
└── MyApp
├── Source
│ ├── Plugins
│ │ └── iOS
│ │ └── MyApp
│ │ ├── MyAppPlugin.h
│ │ └── MyAppPlugin.mm
│ └── MyApp
│ └── Scripts
│ └── Foo.cs
└── MyApp.unitypackage
まとめ・感想
-
AssetDatabase.ExportPackage
で unitypackage を書き出した - 書き出しを簡単にする dddnuts/UnityPacker: Export Unity package を作った
- UnityPacker を使ってパッケージやソースを書きだした
スクリプトでできるようになったので、CLI から batchMode で実行すれば自動化できる。
ファイルの拡張子を .pack
にしたら Git の内部ファイルと被ったので変えたほうが良いかも?