めも

主にUnity

unity GUIDのかぶりを両方残す方法

unitypackageを開いたら被りがあって上書きされてしまう!

f:id:mikomon:20210822150036p:plain:勝手にGUIDが変わる 別にいい
f:id:mikomon:20210822150102p:plain:ファイル名が重複していて上書きされてしまう!

とにかくf:id:mikomon:20210822150215p:plainのマークをなんとかしないと、上書きされてしまう。

上書き後のファイルが他の部分で参照されてほしい場合

アセットをCtrl+Dで複製したあとにただImportする。

上書き前のファイルが他の部分で参照されてほしい場合

アセットの名前/パスを変更した後にImportする。

これらの処理を自動化するには、

  1. AssetPackageを事前に解析する方法
  2. ReflectionなどでUnityのImport時に出るウィンドウを解析する方法

などが考えられる。


↓考えすぎ
***元のファイルのGUIDを変更する方法
非推奨

まずシーンを保存する。こうしないと恐らく「変更されました」通知が出た後、保存するとシーンに対して効果がなくなり、また保存しないとおじゃんになる。
1. Add package from git URL https://github.com/jeffjadulco/unity-guid-regenerator.git
2. 一旦unitypackageを開く
3. 警告⚠マークになっているところのhelpboxに競合先が書いてあるため、そのファイルすべてをRegenerate GUIDする。
思ったより待ち時間が必要(自分の場合は20分程度, Assetsフォルダは12GB, 約2万ファイル)で全く現実的でない。(ちなみにタスクマネージャのディスク使用率は大体3-5%だったので、ドライブの速度はあまり問題にはならなそう。)一気にregenerateしたほうが良い。

入れるファイルのGUIDを変更する方法

入れるunitypackage内でguidが完結しているはずだから、unitypackage(tar.gz)を解凍した後、guidを全部置換して、再度圧縮して、unitypackageとしてインポートする。スクリプトじゃないときつそう。

作るべきスクリプト

unitypackageのf:id:mikomon:20210822150215p:plainのマークがあるもののファイル名とGUIDを変更してインポートするスクリプト

コピーする方法

1. 一旦unitypackageを開く
2. 警告⚠マークになっているところのhelpboxに競合先が書いてあるため、そのファイルすべてを複製する
3.手作業で修復する