LoginSignup
9
5

More than 5 years have passed since last update.

UnityPackageManagerで導入したパッケージにパッチを当てる方法

Posted at

はじめに

Unity Package Manager(UPM)で導入したパッケージを直接弄りたかったので、方法を調べてみました。

関連記事

方法

UPMでインストールしたパッケージは通常マシン上のグローバルな場所にインストールされますが、Packagesディレクトリ以下にパッケージを配置することで、そのパッケージを優先的に利用することが可能なようです。
これを利用することで、UPMで導入したパッケージのソースコードに独自に手を入れることが可能です。

手順

  1. パッケージをインストールする
  2. インストールされたパッケージを複製する
  3. 複製したものを<project directory>/Packages 以下に配置する
  4. 配置したものをよしなに編集する

パッケージのインストール先について

PackageManagerでインストールされたパッケージは以下の場所に配置されています。

  • Mac: /Users/<your usrname>/Library/Unity/cache/packages
  • Windows: C:\ProgramData\Unity\cache\packages

ここにあるパッケージをディレクトリごとPackages以下に複製すれば良いです。

ローカルにインストールしたパッケージと依存関係について

パッケージの依存関係の解決は、以下のように行われるようです。

  1. <project directory>/Packages 以下に該当するパッケージが存在する場合、それを用いる
  2. 1.が該当しない場合、マシン上のグローバルな場所に既にインストール済みの場合、それを用いる
  3. 2.が該当しない場合、リポジトリからパッケージDLし、グローバルな場所にインストールし、それを用いる

例えば com.unity.addressables@0.0.22-preview は以下の依存関係を持っていますが、

package.json
"dependencies": {
    "com.unity.resourcemanager": "2.0.16-preview",
    "com.unity.scriptablebuildpipeline": "0.0.14-preview"
}

ResourceManagerだけを弄りたいという場合は、全てのパッケージをローカルに配置する必要ななく、ResourceManagerのパッケージだけをローカルに配置すれば良いです。

参考リンク

Copying packages under the Packages folder is what we call embedding a package. This feature is not officially supported and has some limitations and potential bugs. Use with caution. This will officially be supported in 2018.3 (if everything goes well).

この機能は暫定的な機能で、2018.3で正式サポート予定とのこと。

manifest.jsonにはローカルの場所も記載できるという話。

また、コメントを読んでいくと、下の方でUnityの中の人が

Git URL will be supported at some point in the future. I cannot give an ETA though :)

と言っているので、npmみたいにgitのリポジトリ指定も将来的にできるようになりそう。これができるようになれば、パッチはforkしたGithubのリポジトリを使うのが良さそうですね。

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5