けいごのなんとか

Unityユーザーとしてのブログ。ギリギリ路線走ってます。

ゲームオブジェクトのスクリプトが「Missing」になった時のリカバリー

このような時に出来るだけ素早く元に戻す。

f:id:anchan828:20140104011644p:plain

まずこのような事になる場合

  • Unityの管理外でスクリプト名の変更をした
  • Unityの管理外でスクリプトファイルの階層構成を変更した

が挙げられます。つまり、Unityが把握してない所で変更したら「誰だお前!?」となる。

Missingになった時でもデータは保持されている

Missingになっていてもシリアライズされたデータは保持されている。

なのでシリアライズされたプロパティのデータの型やプロパティ名を、既存の(MonoBehaviourを継承した)クラスのプロパティと照らし合わせ、一致しているものが多い順に表示してみた。

f:id:anchan828:20140104012411p:plain

一番一致しているプロパティが多いものはGoogleみたいに「もしかして」を付けてみた。

f:id:anchan828:20140104012427p:plain

現在の問題点としては

Missingとなった時のプロパティの照らし合わせで配列(Generic、Array)とUnityEngine.ObjectとEnumは照らし合わせを行っていない。ちょっと面倒なので...

MonoBehaviourのCustomEditorを作成しているので、他でMonoBehaviourのCustomEditorを作成していたらどっちかが動作しなくなる。