概要
Package ManagerでURLを入れると、自動でプロジェクトにソースを入れてくれるやつがとても便利だ。既存のプロジェクトをこの仕組みに対応させたい。
方法
1. プロジェクトを作る
2. Packagesフォルダを右クリック。Explolerで開く
3. Packagesフォルダ直下に任意の名前(ここでは”OpenJTalkForUnity”)のフォルダを作る
4. そのフォルダの直下(図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. Packagesフォルダ下のmanifest.jsonの”dependencies”に、package.jsonで書いたname, version属性を記載
{
"dependencies": {
~~~
"jp.rarafy.openjtalk_for_unity": "1.1.13"
}
6. 必要なファイルをPackagesフォルダに移す
7. GitHubに上げる。上げるのはPackagesに作ったファイル(今は”OpenJTalkForUnity”)の中身だけ
確認
1. プロジェクトを作ってWindow>Package Managerを開く
2. Add package from git URL…を選択(図9)
3. GitHubのリンクを貼り付けて “Add” を押す
すると、このように自作パッケージが使えるようになる。
ちなみに、今回作成したパッケージはこれ(OpenJTalkForUnity)で、文字を音声読み上げさせるライブラリだ。
補遺
1. GUIDのコンフリクト
たまに下記のエラーが出ることがある(図12)
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が正常にファイルを拾うようになる。
3. サンプルデータの定義
「【Unity Package Manager】GitHubの自作ツールをUPM対応する方法メモ|Qiita」の「サンプルデータの定義」の項目を読んでほしい。ここまで来られた読者の方なら難なく理解できるはずだ。分からなかったらコメントで聞いてほしい。