MRが楽しい

MRやVRについて学習したことを書き残す

UnityプロジェクトのPackageManagerでローカルファイル(tgz)からパッケージをインポートする

本日は Unity の小ネタ枠です。
UnityプロジェクトのPackageManagerでローカルファイル(tgz)からパッケージをインポートする方法を記事にします。

PackageManagerでリモートからインポートする

通常、PackageManager でパッケージを取得する場合、UnityRepository や外部のリポジトリを参照してパッケージをインストールすることができます。
今回はこちらの WindowsXRPlugin をサンプルに使用します。

インターネット接続がない環境など、ローカルフォルダを指定してパッケージを取得するほかない場合もあります。
本記事ではこの取得済みのパッケージファイルを利用してローカルフォルダからパッケージをインポートする方法を紹介します。

なお、UnityRepository を参照してパッケージを取得した場合、package.json には以下のように取得パッケージの情報が保持されます。

展開用パッケージファイル(tgz)の作成

ダウンロード済みのパッケージを利用して展開用のパッケージファイルを作成します。
先ほど WindowsXRPlugin をインポートしたプロジェクトの Library/PackageCache フォルダを開き、パッケージのフォルダを見つけます。

これをフォルダごと、適当な作業ディレクトリにコピーします。

フォルダを圧縮する前にフォルダ名を[package]に変更します。

[Shift + 右クリック]で[PowerShell ウィンドウをここで開く]を選択し、PowerShell を開きます。

以下のコマンドを実行してパッケージの tgz ファイルを作成します。

tar -czvf com.unity.xr.windowsmr-4.6.3.tgz package

これで展開用のパッケージファイルが作成できました。

PackageManagerでローカルファイル(tgz)からインポートする

新規プロジェクトを作成してローカルファイルからのインポートを試してみます。

プロジェクトの Package フォルダを開き、パッケージファイルを置くための適当な名前のフォルダを作成します。

先ほど作成したパッケージファイルを以下の通り配置しました。

[PackageMangaer]ダイアログの[+]プルダウンを開き、[Add package from tarball...]を選択します。

配置したパッケージファイル(tgz)を選択して[開く]を実行します。

これでローカルファイルを展開してパッケージがインポートすることができました。

tarball を参照してパッケージを取得した場合、package.json には以下のように取得パッケージの情報が保持されます。
Package フォルダ以下の相対パスを指定してパッケージを取得していることが分かります。

"com.unity.xr.windowsmr": "file:UnityTechnologies/com.unity.xr.windowsmr-4.6.3.tgz",


エラーケースの対処

パッケージファイル(tgz)を選択したときにファイルパスエラーが発生する場合は以下の記事の対処を試してみてください。

[Package Manager Window] Unable to add package [file:UnityTechnologies/com.unity.xr.windowsmr-4.6.3.tgz]:
  The file [C:\Users\dezi_\AppData\Local\Temp\.tmp15964iz7S0mZd2ylu\package.json] cannot be found
UnityEditor.EditorApplication:Internal_CallUpdateFunctions ()

bluebirdofoz.hatenablog.com