TL; DR
- 今はまだ移行できない
- が、民主化まであと一歩なので、準備は進めた方がヨサソウ
Unity Package Manager について
ググれ- Unity が提供する新しいパッケージマネージャ
- GUI 経由で各種パッケージを追加・更新・削除できるやーつ
2018.3.0b7 について
2018/10/24 (恐らく太平洋時間?)に公開された 2018.3 系の最新ベータ。
それのリリースノートに以下の記述が…!
Package Manager: Add experimental support for Git package dependencies.
キタ━━━━━(゚∀゚)━━━━━!!!!
早速試したお!
https://twitter.com/monry/status/1055273094435098624 https://twitter.com/monry/status/1055301050268151809
少なくとも public repository からコードを取得するコトは難なくできた。
「遂に umm が民主化された…!?」と思ったけど、そんなコトもなかった。
現状の課題
依存の依存
manifest.json
(Unity のプロジェクトが依存するパッケージを指定するファイル)には GitHub とかを含むgit
やらhttps
やらのプロトコルを指定出来た。- が、依存先のパッケージの
package.json
にはgit
やらhttps
やらのプロトコルを指定出来なかった。 - つまり、まだ依存解決のモジュールとして使うコトはできなさそう。
SemVer 記法
- yarn ではできるが npm やら upm やらではできないコトとして、 Git リポジトリのバージョンに対する SemVer 指定ができない という問題点がある。
- まぁ、実は npm の場合は
git://github.com/monry/foo.git#semver:^1.0.0
みたいな書き方できるんだけど、ちょっと不便。 - yarn は
git://github.com/monry/foo.git#^1.0.0
こんな感じに書ける。
- まぁ、実は npm の場合は
- で、upm に関しては、どちらの書き方も許容されていない感じだった。
- 基本的には
manifest.json
のlock
ノードで頑張る感じ…なのかな?
更新検知
- 現時点では、GitHub を参照している場合に於いて、GitHub 側で新しい Version が作られても検知されない。
manifest.json
のlock
ノードの対象パッケージに関する記述を消せば、再チェック掛けてくれるもよう。- そのうち何か提供されると信じたい。
パッケージ作成のワークフロー
現状考えているパッケージ開発のワークフローは以下のような感じ。
パッケージ新規開発
- 任意のローカルパスに開発用のディレクトリを作成
package.json
を配置- 各フィールドはテキトーに書き換えよう!
{ "name": "tv.monry.upm.test", "dependencies": { }, "version": "1.0.1", "unity": "2018.2", "displayName": "Monry Test", "description": "", "keywords": [ "unity" ], "readme": "test test test" }
- この
package.json
を Package Manager Window のAdd package from disk...
から追加 - 無事に追加されました :tada:
- 今回追加した
Packages/Monry Test/
はあくまでローカルディレクトリへの参照なので、普通にスクリプトの追加とかができます。便利!
パッケージ公開
プロジェクト設定
- パッケージ開発中の
manifest.json
には"tv.monry.upm.test": "file:///Users/monry/Developer/git/monry/upm-test"
的な内容が書かれている。 - パッケージが公開された以降は
"tv.monry.upm.test": "git://github.com/monry/upm-test.git"
などと書き換えましょう。
パッケージ改修
- これが結構メンドイ。
- 一回プロジェクトの
manifest.json
を GitHub → ローカルディレクトリに向け直す必要がある。 - ちょっと頑張ればエディタ拡張作れそうな気もするので、何か、まぁ、頑張れ。
まとめ
- Release Note にもあるように、今はまだ Experimental Support のレベルなので、もう一歩って感じです。
- が、民主化は目前なので、ライブラリ開発を行う各位は準備に向けて動くと良いんじゃないでしょうか?
おまけ
今回検証したリポジトリは以下の通りです。
- monry / Package-Manager-Test
- プロジェクト本体
- monry/upm-test: Test repository for Unity Package Manager
- プロジェクトから直接参照させるリポジトリ
- v1.0.0 が依存設定なし
- v1.0.1 が
upm-dependent
への依存設定あり(エラー発生により動作せず)
- monry/upm-dependent: Dependent package for Unity Package Manager
upm-test
から参照されるコトを想定したリポジトリ