UnityプロジェクトをGit管理しているときに
うっかりmetaファイルがgitignoreされていて、PULLしてきた時にmetaファイルが更新され、missing prefabになってしまう。
あるあるですよね
ど゛う゛し゛て゛な゛ん゛だ゛よ゛お゛お゛ぉ゛お゛!゛!゛!゛ん゛あ゛あ゛あ゛あ゛あ゛ぁ゛ぁ゛あ゛あ゛!゛!゛!゛!゛
metaファイルはignoreされており、metaファイルは一度もコミットされていないので、バックアップなど存在しません。
絶望しかありません。
シーン上のGameObjectをUnpackすれば治る的な記事を見つけましたが、治りませんでした。(赤い文字が白くなっただけ)
再度Prefabを配置し直すという選択肢も、どの値をPrefabにApplyしてあったか、記憶を頼りに復元するしかありません。
(適度にOverrideしましょうね...)
どうするか
ymlのguidを直接書き換えましょう
※自己責任でお願いします。(バックアップをとっておいてください)
Unityのバージョンは
- 2019.3です
新しく生成されたPrefabのmetaファイルをテキストエディタで開きましょう
(一応モザイクで隠しておきましたが、必要なかったかもしれません)
(Item.meta)
こちらのguidの値を控えておきましょう。
続いて、missing prefabが置いてあるシーンファイルをテキストエディタで開きます。
目の前に広がるymlファイル。幻想的ですね
その中からmissing PrefabになっているGameObjectの名前で検索をかけましょう (ItemというGameObject)
以下の画像の緑枠の部分です。
赤枠のguidの項目(581xxxxx)の部分が複数ありますが、それらを全て先ほど控えたmetaファイルのguidの値(cf1xxxxx)で書き換えましょう
(一つのGameObject名に複数あるようです (- targetの項目分だけ必要?))
その状態でUnityEditorに戻ります。
すると!なんとmissing Prefabが復活しているではありませんか!
私の可愛いPrafabちゃん❤️
ということで少し面倒ですが、metaファイルのguidを紐付け直してあげれば復活させることが可能でした。
記憶を便りに復活させていくよりは全然マシでしょう。
これでもうmissing prefabになったからといって、泣き寝入りしなくて済みますね!