はじめに
GitHubで公開していた自作ツールをUPM対応させる手順を軽くまとめたいと思います。
結論から述べると、GitHubに package.json
を置けば、とりあえずはUPM経由でツールをインストールできるようになります。
公式ドキュメント : カスタムパッケージの作成
https://docs.unity3d.com/ja/2019.4/Manual/CustomPackages.html
前提知識
・UPM(Unity Package Manager) の使い方が分かる
・GitHubでリポジトリを公開する方法を知っている (Gitの基本操作が分かる)
今回対応したツール
今回対応したツールは以下になります。
https://github.com/rngtm/Unity-VFXToolBox
UPMの add package from git URL...
から以下のURLを叩くとツールがインストールできます。
https://github.com/rngtm/Unity-VFXToolBox.git?path=Assets/VfxToolBox
ツールをUPMで公開する手順
GitHubの自作ツールをUPM対応する必要最低限の手順は以下の通りです。
- 公開したいツール類のルートディレクトリに
package.json
を置く - UPM から
{GitHubのリポジトリURL}.git?path={package.jsonのディレクトリ}
を指定してパッケージをインストール
パッケージのディレクトリ構成は、公式ドキュメントを参考にすると良いでしょう。
https://docs.unity3d.com/ja/2019.4/Manual/cus-layout.html
Gitパスの例
https://github.com/rngtm/Unity-VFXToolBox
というGitHubリポジトリを考えます。
package.json のパスが Assets/VfxToolBox/package.json
である場合
UPMにて https://github.com/rngtm/Unity-VFXToolBox.git?path=Assets/VfxToolBox
というURLを指定することでパッケージをインストールできます。
ツールのディレクトリ構成
今回UPM対応したツールのディレクトリ構造は以下のようになっています。
パス | データ詳細 |
---|---|
Assets/VfxToolBox/Editor/ | ツールの動作に必要なC#スクリプト。UPMで配布したい |
Assets/VfxToolBox/Samples/ | ツールの動作に必要ではないが、サンプルデータとしてUPMで配布したい |
Assets/
+---Preset/
+---Settings/
+---UniversalRP/
\---VfxToolBox/
+---package.json
+---Editor/
| +---ツールに必要なC#スクリプト類
\---Samples/
+---SampleData/
| +---Sample001/
| | +---エフェクトのサンプルデータ その1 (マテリアル・テクスチャ・Prefab・シーン)
| \---Sample002_Aura/
| +---エフェクトのサンプルデータ その2 (マテリアル・テクスチャ・Prefab・シーン)
\---Shaders
+---Sample001
| +---Sample001に必要なシェ―ダー
\---Sample002_Aura
+---Sample002に必要なシェ―ダー
UPMで配布したくないアセット
UPMで配布したくないアセット類は package.json
より上の階層に配置します。
Assets/Preset
や Assets/Settings
といったフォルダがありますが、これらは package.json
より上の階層にあるので、UPMでは配布されません。
最低限のUPM対応手順
package.json
をGitHubに置けば、UPMからパッケージとしてインストールできるようになります。
今回は Assets/VfxToolBox/
以下のアセットをUPMで配布するため、以下のようなpackage.jsonを配置しました。
{
"name": "com.rngtm.vfx-toolbox",
"displayName": "VFX Toolbox",
"version": "1.2.0",
"unity": "2021.1",
"description": "VFX Tools for ParticleSystem.",
"author": {
"name": "r-ngtm",
"url": "https://github.com/rngtm"
},
"keywords": [
"shader",
"particle",
"vfx"
],
"dependencies": {
},
}
更新履歴 CHANGELOG.md の追加
CHANGELOG.md
を追加することで、パッケージの変更履歴を残しておくことができます。
CHANGELOGは書いておいた方が良いでしょう。
私は以下のような CHANGELOG.md
を書いてみました。
# Changelog
## [1.2.0] - 2021-01-03
### Changes
- Add Aura sample (SampleData001).
## [1.1.0] - 2021-01-03
### Changes
- Organizing old VFX Samples (SampleData001).
- Adding aura VFX (SampleData002_Aura).
## [1.0.3] - 2021-01-03
### Changes
- Removing shaders from Sample directory completely.
## [1.0.2] - 2021-01-03
### Changes
- Removing shaders from Sample directory.
## [1.0.1] - 2021-01-03
### Changes
- Added samples for Unity Package Manager.
## [1.0.0] - 2021-01-03
### This is the first release of *Unity Package vfx-toolbox*.
- Added support for Unity Package Manager.
サンプルデータ
package.jsonにsamplesを記述することで、UPMからサンプルデータをインストールできるようになります。
サンプルデータのインストール
Importボタンを押してアセットをインポートすると、Unityプロジェクトへアセット類がインストールされます。
インストールされるサンプルデータは
Assets / Samples / パッケージ名 / バージョン番号 / サンプルデータ名
というパスになっています。
サンプルデータの定義
package.jsonには以下の内容を追加することで、サンプルデータを定義することができます。
"samples": [
{
"displayName": "VFX Sample 1",
"description": "Particle System and Spatial UI Samples.",
"path": "Samples/SampleData/Sample001"
},
{
"displayName": "VFX Sample 2 - Aura Effect",
"description": "Aura Effect Sample.",
"path": "Samples/SampleData/Sample002_Aura"
}
]
属性 | 詳細 |
---|---|
displayName | UPM上で表示するサンプルの名前 |
description | サンプルの詳細 |
path | (package.jsonから見た)サンプルデータの相対パス |
パッケージ内のpackage.jsonやサンプルデータのディレクトリ構成は以下のようになっています。
VfxToolBox/
+---package.json
\---Samples/
+---SampleData/
| +---Sample001/
| | +---エフェクトのサンプルデータ その1 (マテリアル・テクスチャ・Prefab・シーン)
| \---Sample002_Aura/
| +---エフェクトのサンプルデータ その2 (マテリアル・テクスチャ・Prefab・シーン)
\---Shaders
+---Sample001
| +---Sample001に必要なシェ―ダー
\---Sample002_Aura
+---Sample001に必要なシェ―ダー
参考リンク
カスタムパッケージの作成
https://docs.unity3d.com/ja/2019.4/Manual/CustomPackages.html
パッケージマニフェスト
https://docs.unity3d.com/ja/2019.4/Manual/upm-manifestPkg.html
Unity PackageManagerを使う話。
https://www.slideshare.net/TakayoshiOgawa/unity-packagemanager
2020年版 Unity Package Manager の Release Notes 全部抜く
https://zenn.dev/monry/articles/e86eac9f4ee2ea5baaa9