search
LoginSignup
9

posted at

updated at

【Unity Package Manager】GitHubの自作ツールをUPM対応する方法メモ

はじめに

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

image.png

ツールをUPMで公開する手順

GitHubの自作ツールをUPM対応する必要最低限の手順は以下の通りです。

  1. 公開したいツール類のルートディレクトリに package.json を置く
  2. 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を指定することでパッケージをインストールできます。

image.png

ツールのディレクトリ構成

今回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/PresetAssets/Settings といったフォルダがありますが、これらは package.json より上の階層にあるので、UPMでは配布されません。

最低限のUPM対応手順

package.json をGitHubに置けば、UPMからパッケージとしてインストールできるようになります。

今回は Assets/VfxToolBox/ 以下のアセットをUPMで配布するため、以下のようなpackage.jsonを配置しました。

Assets/VfxToolBox/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.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からサンプルデータをインストールできるようになります。
image.png

サンプルデータのインストール

Importボタンを押してアセットをインポートすると、Unityプロジェクトへアセット類がインストールされます。
image.png

インストールされるサンプルデータは

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
9