Unity PackageManagerを使って自作パッケージをプロジェクトに追加できるようにする
自作した機能をUnity PackageManager(以降はUPM)で追加と削除できるようにして使い回しのスピードを上げてみようと思います。
使いまわしたい機能とgithubのレポジトリがあることが前提です。
ここでは、高さフォグ機能のURP RendererFeatureとVolumeのコードとシェーダーをUPMで追加/削除できるようにします。
Githubレポジトリ
https://github.com/jnhtt/height-fog-urp-volume
Window > PackageManager > Add package from git url … > https://github.com/jnhtt/height-fog-urp-volume.git?path=Assets/HeightFog
Unity PackageManager対応
- フォルダ構成
- package.json の記載内容
- asmdef
フォルダ構成
Unity推奨の構成
<root>
├── package.json
├── README.md
├── CHANGELOG.md
├── LICENSE.md
├── Third Party Notices.md
├── Editor
│ ├── [company-name].[package-name].Editor.asmdef
│ └── EditorExample.cs
├── Runtime
│ ├── [company-name].[package-name].asmdef
│ └── RuntimeExample.cs
├── Tests
│ ├── Editor
│ │ ├── [company-name].[package-name].Editor.Tests.asmdef
│ │ └── EditorExampleTest.cs
│ └── Runtime
│ ├── [company-name].[package-name].Tests.asmdef
│ └── RuntimeExampleTest.cs
├── Samples~
│ ├── SampleFolder1
│ ├── SampleFolder2
│ └── ...
└── Documentation~
└── [package-name].md
今回のHeightFogの場合は以下の通り。
説明 | 備考 | |
---|---|---|
package.json | パッケージマニフェスト | |
README.md | ドキュメント | |
CHANGELOG.md | 変更履歴 | |
LICENSE.md | ライセンス表記。他の人に使ってもらう場合は必須 | |
Runtime | ランタイム機能。要アセンブリ | https://docs.unity3d.com/ja/current/Manual/cus-asmdef.html |
Samples~ | サンプルデータ | PackageManagerからサンプルをインポートする |
Unity公式
https://docs.unity3d.com/ja/current/Manual/cus-layout.html
package.json
難しいことは特になく、公式のドキュメントに従って書くだけです。
注意としては、samplesのpathはSamples~で始まるようにしてください。
Unity公式
https://docs.unity3d.com/ja/current/Manual/upm-manifestPkg.html
asmdef
Runtimeフォルダ内にasmdefを作成して、Assembly Definitin Refererncesに必要なasmdefを追加します。
asmdefが無いとUPM経由でimportするとエラーになります。
zipでプロジェクトに追加する場合は、不要ですが今回の意図には一致しないのでasmdefを作成してください。
今回は、URP Renderer FeatureとVolumeが必要なので以下を追加しました。
- Unity.RenderPipelines.Core.Runtime
- Unity.RenderPipelines.Universal.Runtime
Unity公式
https://docs.unity3d.com/ja/2022.3/Manual/cus-asmdef.html
GUIDが重複してエラーになる場合
エラーが出たアセットの.metaのGUIDを1文字変更してください。
デフォルトで作成されるSampleSceneを使い回すとこのエラーが出ます。