本日は 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 ()