LoginSignup
15
12

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-01-04

はじめに

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

15
12
1

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
  3. You can use dark theme
What you can do with signing up
15
12