個人的な備忘録。
一次資料 ( Unity マニュアル )
Unity の Package Manager - Unity マニュアル
Git URL からのインストール - Unity マニュアル
パッケージレイアウト - Unity マニュアル
参考にした先達の資料
Unity プロジェクトを作成
今回は Unity プロジェクトの中身をパッケージとして公開したいのでマニュアルで紹介されていた構成をAssets/MatsumotoPackageExampleフォルダ以下に構成。

package.json を記述
パッケージマニフェストはマニュアルにあるものをほぼコピペ
パッケージマニフェスト - Unity マニュアル
必須要素
| プロパティ | 説明 |
|---|---|
| name | パッケージ名 |
| version | パッケージバージョン |
必要要素
| プロパティ | 説明 |
|---|---|
| description | パッケージの概要 |
| displayName | Projectウィンドウ、UPMウィンドウでの表示名 |
| unity | パッケージと互換性のあるUnityの最も低いバージョン、省略すると全てのUnityバージョンと互換性が有るものとみなす |
任意要素についてはマニュアルを参照。
下のマニフェストは必要最低限の要素を記述したもの。
注意点として name のパラメータは全て小文字でないとダメです。
会社名やウェブサイト名が数字で始まっていても、<domain-name-extension>.<company-name> (例えば、com.example や net.example) で開始します。
UI に表示したい場合は 50 文字以下にしてください。UI にパッケージ名を表示する必要がない場合は 214 文字以下に制限してください。
小文字、数字、ハイフン (-)、アンダースコア (_)、ピリオド (.) のみを使用してください。
ネストされた名前空間を示すために、名前空間に追加のピリオドのサフィックスを加えてください。例えば、 “com.unity.2d.animation” や “com.unity.2d.ik” など。
{
"name": "com.matsumoto.example",
"version": "0.0.1",
"displayName": "MatsumotoPackageExample",
"unity": "2021.3",
"author": {
"name": "Matsumoto",
"email": "unity@example.com",
"url": "https://www.unity3d.com"
},
"repository": {
"type": "git",
"url": "https://github.com/RyusukeMatsumoto7C9-B-2/UnityPackageLaern"
},
"license": "MIT License"
}
Github URL でインポートテスト
マニュアルにあるレイアウト例はリポジトリの直下に各種ファイルがある状態 ( UnityProject ではない状態 )での公開でのレイアウトなので今回の方法ではそのままリポジトリのURLを公開する形だとエラーが出てインポートできない。
UnityProject で開発を進めそれをパッケージとして公開したい場合はAssetsフォルダ以下 ( できればもう一つフォルダを挟む、今回の例では MatsumotoPackageExample ) に package.json を配置し、そのフォルダまでの URL を利用することでインポートできる。
リポジトリの URL + ?path=package.json があるフォルダまでのパス
↓例
https://github.com/RyusukeMatsumoto7C9-B-2/UnityPackageLaern.git?path=Assets/MatsumotoPackageExample
これでUnityProjectをGithubのURLでPackageManagerからインポートすることができるようになる。
動作確認
実際にプロジェクトにインポートして正常にパッケージをインポートできているか確認。
利用する URL は↓を利用する。
https://github.com/RyusukeMatsumoto7C9-B-2/UnityPackageLaern.git?path=Assets/MatsumotoPackageExample
PackageManager を開き add package from git URL から URL を記入。

成功すると PackageManager の画面で正常に MatsumotoPackageExample が表示される。

Packages フォルダ以下に展開されているのも確認できる。

おまけ : サンプルを追加してみる
Samples フォルダ以下に SamplesHoge を作成。

作成後、 Samplesフォルダを Samples~ に名称を変更し、非表示にする。

その後 package.json を編集、versionの更新と一番下にサンプルを追加した。
{
"name": "com.matsumoto.example",
"version": "0.0.3",
"displayName": "MatsumotoPackageExample",
"description": "This is an example package",
"unity": "2021.3",
"author": {
"name": "Matsumoto",
"email": "unity@example.com",
"url": "https://www.unity3d.com"
},
"repository": {
"type": "git",
"url": "https://github.com/RyusukeMatsumoto7C9-B-2/UnityPackageLaern"
},
"license": "MIT License",
"samples": [
{
"displayName": "HogeSample",
"description": "HogeSample",
"path": "Samples~/SamplesHoge"
}
]
}
Github でリリースを作成する
0.0.4 のタグを作成、Githubでリリースも0.0.4で作成( .unitypackage もここで公開すれば UPM、unitypackage両方での導入が可能になり親切 )

リポジトリのURLの末尾に0.0.4のタグ名 #0.0.4 を追加してUPMがバージョン0.0.4を参照するようにして Add 。
https://github.com/RyusukeMatsumoto7C9-B-2/UnityPackageLaern.git?path=Assets/MatsumotoPackageExample#0.0.4
無事 0.0.4 のバージョンがインポートされた。

Samples に先ほど作成した HogeSample が表示されているのでインポートを押下する。

すると Assets/Samples/MatsumotoPackageExample フォルダが追加され 0.0.4 の HogeSample が追加されているのが確認できる。

今回作業したリポジトリ
最後に、参考になるかはわからないですが今回作業したリポジトリ。
コミットログはいろいろ迷走していたので結構汚いです。