Unityのエディター拡張をカスタムパッケージにして配布する
エディター拡張を作る機会が増えて来て、unitypackageだと管理が大変になってきた。
なので、カスタムパッケージにして導入を楽にしたい。
目標
- git経由でパッケージマネージャーから導入できるようにする
- npmjsに上げてUPMで導入できるようにする
まずはカスタムパッケージを作るために、空プロジェクトを作る。
空プロジェクトのルート内にあるPackagesフォルダに、必要なファイル群を用意する。
- パッケージの名前のフォルダー
- package.json パッケージの情報を書くためのjson
- Scripts このフォルダの中にパッケージのスクリプト群などを置く
UnityProj
├── Packages
│ ├── 作成するパッケージ名
│ │ ├── package.json
│ │ └── Scripts
│ │ └── ここにスクリプトとか
package.json
を作る。
ドキュメントにサンプルがあるので、それを参考に。
{
"name": "com.dolphiiiin.localize-toolkit",
"version": "1.0.0",
"displayName": "Localize Toolkit",
"description": "Localize Toolkitは、Cluster Creator Kitの多言語リソース機能の設定をアシストするためのツールです。\n簡単なステップでTextコンポーネントにローカライズを設定することができます。","Dolphiiiin",
"unity": "2021.3",
"keywords": [
"unity"
],
"license": "MIT",
"documentationUrl": "https://toza.notion.site/Localize-Toolkit-2ef04cf16833482c9dc4ac9674948663",
"repository": {
"type": "git",
"url": "https://github.com/Dolphiiiin/LocalizeToolkit.git"
},
"dependencies": {
"mu.cluster.cluster-creator-kit": ""
}
}
今回はこうなった。
依存パッケージとして、mu.cluster.cluster-creator-kit"
を使用しているので、dependencies
に記述しておく。
エラー出た
An error occurred while resolving packages:
Folder [D:\worlds\Localize Toolkit\Packages] contains invalid packages:
Manifest [D:\worlds\Localize Toolkit\Packages\LocalizeToolkit\package.json] is invalid:
Package name 'com.dolphiiiin.LocalizeToolkit' is invalid.
A re-import of the project may be required to fix the issue or a manual modification of D:/worlds/Localize Toolkit/Packages/manifest.json file.
エラーの原因には、package.jsonに設定したパッケージの名前に問題があったみたい。
パッケージの名前には命名規則がある。
今回は大文字が入っていたのでエラーになった。小文字にしてハイフンで区切ったら治った。
Unityのプロジェクトをリフレッシュすると、Packagesフォルダ内に、さっき作ったパッケージが見えるようになる。
ここからは、プロジェクトウィンドウ上でファイルの編集が可能。
ちなみに、package.jsonはインスペクター上で編集できる。
Packagesフォルダに作成したパッケージが出現しても、まだスクリプトは使用できない。
Assembly Definitionを作成する必要がある。
スクリプトが入ってるフォルダを右クリックして、Create => Assembly Definition
で作成できる。
今回編集したのはこのあたり。
- Name アセンブリ定義の名前
- Root Namespace デフォルトの名前空間
-
Assembly Definition Refarences パッケージに含まれない外部のアセンブリをusingで参照している場合は、ここにそのAssembly Definitionをセットする。(やらないと、missingエラーがたくさんでる)
ここまで来たら、パッケージのフォルダにREADMEやら作って、フォルダをgithubにプッシュ。
これで、パッケージマネージャーからgitリポジトリ経由でパッケージを読み込める。
npmjsでアカウントを作ってトークンを発行する。
アカウントページのAccess Tokenページへ行って、トークンを発行する。
GitHubのリポジトリのSettingsのActions secrets and variables
でNPM_TOKEN
としてトークンを定義しておく。
リリース作業を自動でさせるためにGithub Actionを組む。
/.github/workflows
にRelease.yml
を作成して記述する。
name: Release to npmjs
on:
release:
types: [created]
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
registry-url: 'https://registry.npmjs.org/'
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
リリースを作成したら、npmjsにリリースさせるようにした。
これでTagを打って、リリースを作成すると、npmjsにリリースされる。
今後アップデートをするときの手順。
-
package.json
のバージョンを書き換える - コミットして、プッシュ
- タグを打つ
UnityのProject SettingsでScoped registryを設定すれば、パッケージマネージャーのMy registryからインストールできるようになる。
Field | Value |
---|---|
Name | dolphiiiin |
URL | https://registry.npmjs.com/ |
Scope | com.dolphiiiin |