🔧

Unity Package Managerのソースコードにパッチを当てる

2021/04/08に公開
2

Unity Packageのソースコードにバグがあり直したい場合、普通はUPMでの管理を諦めてAssets内にコピーして修正します。

私の場合はARFoundationをUnity Editorでリモートデバッグするライブラリを作っていましたが、ARFoundationはUnity Editorでのテストを全くされていないので、Editorでのみ発生する問題がありました。ARFoundationはバージョンアップが早く、他のバージョンのUPMを頻繁に差し替えることが合ったので、ソースをコピーするのではなく、パッチを当てていました。

Unity 2020.2頃まではパッチをPROJECT_ROOT/Library/PackageCache/THE_PACKAGE_ID以下に当てればよかったものの。

Unity 2020.3 LTSから、プロジェクトのPackageCacheを変更しても、即座に元のファイルにRevertされるようになってしまいました。そこでUniyt Package ManagerのGlobal Cacheへも同時にパッチを当てることに。

Global Cacheの場所
https://docs.unity3d.com/Manual/upm-cache.html

最終的に以下のようなソースになりました。

https://github.com/asus4/ARKitStreamer/blob/master/Packages/com.koki-ibukuro.arkitstream/Editor/PackagePatch.cs

難点は、Global Cacheを変更するので、使ってる全プロジェクトへ適用されてしまいます。
グローバルのキャッシュを消せば元に戻せます。

Discussion

Mitsuhiro KogaMitsuhiro Koga

upmのパッケージはmanifest.jsonがあるPackagesフォルダに直接配置できるのでPackageCacheからコピーしてパッチを当てると影響範囲をそのプロジェクトに限定できます。

Koki IbukuroKoki Ibukuro

私も通常のプロジェクトだとそうやっています。
上記の場合はOpen Source Projectでユーザー毎に別バージョンのAR Foundationを使ったりしているので、パッチを当てる必要がありました。