夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

UnityPackageManagerで導入したパッケージのスクリプトを編集可能にする

本日はUnityの実験枠です。

UnityではPackageManagerを使用することでGitHubやURLから外部パッケージをインポートすることができます。

ここでインポートしたパッケージは通常AssetsではなくPackagesの階層に格納されます。

Packages内は容易に編集できないように制限があります。

例えばAssets同様に何かしらのファイルを作成することはできません。

またファイルの編集も基本的にできず、インスペクター上でプロパティを見ることはできますが、変更はできません。

C#ファイルに関しても同様で、基本的にファイルをIDEで開くことはできますが、編集しても保存することはできません。

〇Package内のファイル

Packages内のファイルは(Unityプロジェクト名)\Library\PackageCachecom.XXXXXXという形で存在します。

ここのファイルはPackageManagerのファイルである(Unityプロジェクト名)\Package\manifest.jsonに基づき動的にインポートされています。

〇Packages内のファイルを編集可能にする

Package内のファイルをAssetsに移植します。

UnityのAssets内に移植後のフォルダを作成しておきます。

対象のPackagesでShow in Explorerを選択します。

ファイルエクスプローラーでAssets内の移植先フォルダを開きファイルエクスプローラー経由でファイルをドラッグ&ドロップで移植します。

最後にManifest.jsonからパッケージの定義を削除します。これでPackageから完全に対象のパッケージが削除され競合しなくなります。

これによってAssetsに移植できました。

最後に実機で動作を確認します。

今回の場合404と接続エラーが出てしまいました。

これはdllやアッセンブリ定義などの依存関係が完全には移行できていないことを意味します。

パッケージによってはこのような依存関係が切れることによるエラーが発生する可能性があります。

今回移植したRenderStreamingではこのように失敗してしまいました。

UnityEditor上ではエラーなく実行できていますが、実際の内部でどこかしらの破断が発生していることになります。

RenderStreamingの場合は無難にPackagesで運用するほうがよさそうです。

本日は以上です。