ちゃこブログ

お絵かきとUnityとBlenderと日記

【Unity】CustomPackageManager作った

久々のブログ更新です。

最近の開発でPackageManagerを利用することも多くなり、また自分で作ったプラグインもPackage化を行って利用しています。最近ではEC2の無料枠インスタンスでVerdaccioを起動して自分専用のprivate npm Registryを作成して快適な個人開発ライフを送っています。

Packageの管理方法としてnpm registryかgitを利用することが主流になってきています。ProjectにUnity公式以外のPackageを追加するためには、manifest.jsonに適切な形式でPackageの情報を記述する必要があります。追加だけでなく、Git管理の時は更新するときもいちいちmanifest.jsonを開いて編集しなくてはなりません。せっかくスマートにAsset管理するのにPackage化してるのに、ちまちまmanifest.jsonの編集をする作業、まさに虚無です。

github.com

まぁこういうツール探せばどっかにあるかなと思いましたが、とりあえず自分用に作っちゃいました。manifest.jsonをUnityEditor上で直接編集するツールです。機能としては、

  • Packageの追加・編集
  • Registry URLの追加
  • Git Packageの更新
  • scopedRegistryの追加・編集

f:id:charcotte:20190922023014p:plain

Windowに項目を追加するほどでもないかと思い、PreferenceにUIを作ってみました。ここのPackage一覧に表示されるのはcom.unity以外のものです。もし自分のPackageにcom.unityとか付けてたら表示されないので注意です。

GitのPackageの更新の機能も実装しています。Gitから引っ張ってくるPackageがあると、manifest.json内にlockという項目が出てきます。Package追加時点での最新コミットのハッシュ値が記載されます。Packageを最新にしたい場合、lockの中にあるPackage情報の削除を行うことで勝手に最新のコミットをひっぱってくることができます。このlock内Package削除が非常に手間なので、右クリックで削除して更新してくれる機能を実装しました。

ScopedRegistryについては、Scopesの編集を後から行えるようにしてます。自分でたてたnpm registryに適当なPackage名でじゃんじゃんpublishしてたらScopesが大変なことに…いやだってPackage名はcom.作者名.Asset名にしたいから多種多様になるじゃんね?というわけで後からScopesの追加をできるようにしてます。

manifest.jsonの追加で時間ロスしてる人にはオヌヌメです。一気に作ったからバグだらけかもしれませんが…( ˘ω˘ )