【Unity】Unity Package Managerで使えるgitレポジトリを作る

概要

Package ManagerでURLを入れると、自動でプロジェクトにソースを入れてくれるやつがとても便利だ。既存のプロジェクトをこの仕組みに対応させたい。

図1.GitHubでよくあるやつ
図2.URLでインポート


方法

1. プロジェクトを作る
2. Packagesフォルダを右クリック。Explolerで開く

図3.Explorerでファイルを開く(Zennから引用)

3. Packagesフォルダ直下に任意の名前(ここでは”OpenJTalkForUnity”)のフォルダを作る

図4.フォルダの作成

4. そのフォルダの直下(図5)に、下の内容でpackage.jsonを作成

図5.package.jsonの作成
{
    "name": "jp.rarafy.openjtalk_for_unity",
    "author": "rarafy",
    "version": "1.1.13",
    "displayName": "OpenJTalkForUnity",
    "description": "This is a test package",
    "unity": "2020.3"
}

※ package.jsonはUnity側のGUIでも編集できる。Typeを”module”に変更するとパッケージが見えなくなる。注意

図5.package.json(Unity側)

5. Packagesフォルダ下のmanifest.jsonの”dependencies”に、package.jsonで書いたname, version属性を記載

{
	"dependencies": {
		~~~
		"jp.rarafy.openjtalk_for_unity": "1.1.13"
}

6. 必要なファイルをPackagesフォルダに移す

図6.ファイル移動(Assets→Packages)

7. GitHubに上げる。上げるのはPackagesに作ったファイル(今は”OpenJTalkForUnity”)の中身だけ

図7.ファイルアップロード


確認

1. プロジェクトを作ってWindow>Package Managerを開く

図8.Package Manager

2. Add package from git URL…を選択(図9)

図9.gitからパッケージを入れる

3. GitHubのリンクを貼り付けて “Add” を押す

図10.GitHubのリンク

すると、このように自作パッケージが使えるようになる。

図11.自作パッケージ




ちなみに、今回作成したパッケージはこれOpenJTalkForUnity)で、文字を音声読み上げさせるライブラリだ。



補遺

1. GUIDのコンフリクト

たまに下記のエラーが出ることがある(図12)

図12.GUIDのコンフリクト
GUID [9fc0d4010bbf28b4594072e72b8655ab] for asset 'Packages/jp.rarafy.openjtalk_for_unity/Sample/WindowsNative.unity' conflicts with:
  'Assets/Scenes/SampleScene.unity' (current owner)
We can't assign a new GUID because the asset is in an immutable folder. The asset will be ignored.

“guid: 9fc0d4010bbf28b4594072e72b8655ab” はUnityが生成する “SampleScene.unity” のデフォルトGUIDである。”SampleScene.unity” をコピペしてパッケージに組み込んだ場合にありがちなエラーだ。やってられない

このエラーが出たときは、指摘されたシーンの “.meta” ファイルを開き、GUIDを変更する(GUIDのどこか1文字を変更するだけで良い)。



2. Gitのルート以外にパッケージを配置したい場合

プロジェクトのルート以外にフォルダを置きたい場合がある。むしろ、不具合の温床になるしメンテナンスもしづらいので、ルートにパッケージを配置するのは避けた方がいい。

package.jsonがルートディレクトリ以外にあるプロジェクト構造を取った場合、Unity側で貼り付けるURLも同時に変わる。例えば、図13の場合、UPMのリンクは “https://github.com/rarafy/OpenJTalkForUnity.git?path=_Project/Packages/OpenJTalkForUnity” を指定すればUPMが正常にファイルを拾うようになる。

図13.階層構造



3. サンプルデータの定義

【Unity Package Manager】GitHubの自作ツールをUPM対応する方法メモ|Qiita」の「サンプルデータの定義」の項目を読んでほしい。ここまで来られた読者の方なら難なく理解できるはずだ。分からなかったらコメントで聞いてほしい。

作成者: rarafy

2013年くらいからUnityを触っているかもしれません。 特に書くこともありませんが、趣味は部屋の掃除です。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です