UnityプロジェクトをGit管理しているときに
うっかりmetaファイルがgitignoreされていて、PULLしてきた時にmetaファイルが更新され、missing prefabになってしまう。
あるあるですよね
![Screen Shot 2020-07-07 at 15.24.36.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F71629%2F79a98254-7e6f-d9b5-7e00-392e5ae7de71.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=81bfcdd79d523bae1f2499cef618ff09)
ど゛う゛し゛て゛な゛ん゛だ゛よ゛お゛お゛ぉ゛お゛!゛!゛!゛ん゛あ゛あ゛あ゛あ゛あ゛ぁ゛ぁ゛あ゛あ゛!゛!゛!゛!゛
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)
以下の画像の緑枠の部分です。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F71629%2F8ba8443a-0879-a56a-5c55-a53e2cabe6ab.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=7f2c7b8ec55ab9a76b8bcecf6e13193f)
赤枠のguidの項目(581xxxxx)の部分が複数ありますが、それらを全て先ほど控えたmetaファイルのguidの値(cf1xxxxx)で書き換えましょう
(一つのGameObject名に複数あるようです (- targetの項目分だけ必要?))
その状態でUnityEditorに戻ります。
すると!なんとmissing Prefabが復活しているではありませんか!
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F71629%2F2cf7587b-0d7c-7a33-6290-7ea2383ee28d.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=ecaf42758c22ed49c36ace0b144ec3a6)
私の可愛いPrafabちゃん❤️
ということで少し面倒ですが、metaファイルのguidを紐付け直してあげれば復活させることが可能でした。
記憶を便りに復活させていくよりは全然マシでしょう。
これでもうmissing prefabになったからといって、泣き寝入りしなくて済みますね!