テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】ファイル名(アセット名)の一括更新について

Unityで作業をしていて、ファイル名の変更で少しひっかかったのでメモ。

ファイル名の変更とGUID

Unityでファイル操作を行う場合、ファイルの移動やリネームはUnityエディタで行う必要があります。

というのも、Unityは全てのファイル(アセット)にGUID(グローバル単位のユニークなID)を割り振り管理しているのですが、
Unity以外でファイルの移動やリネームを行った場合「ファイルが移動した」ではなく「ファイルが1つ消え、新しく別のファイルが作成された」と判断されGUIDが新しく割り振られます。そして結果としてGUIDから参照しているアセットがmissingになる為です。

f:id:tsubaki_t1:20160127225219j:plain

tsubakit1.hateblo.jp

なのでUnityが「移動した」「改名した」と判断できる、もしくは「改名してない」と判断できるようUnityエディタ上で変更するのが望ましいのですが、今回すこし問題が出ました。
つまり、対象のファイルが結構たくさんあった場合です。

f:id:tsubaki_t1:20160127225024j:plain

GUIDを操作しないようにファイル名を変更する

missingにしないためには、GUIDが変化しないようにリネームする必要がありますが、数が多いと非常に面倒です。たとえばキャラクター名をYukoとTokoで勘違いしてた場合など、ほぼすべてのファイル名の一部に変更が入ります。

GUIDが更新されるタイミングは色々とありますが、基本的には.metaファイルが新しく生成されたタイミングですので、.metaファイルが新しく生成されない限りはGUIDが更新されません

なので、ファイルを更新する際「ファイルと同名のメタファイルも同じ名前に更新」すれば、GUIDが更新されずmissingになる事はありません。少なくともmetaで管理してる方式ならば。

f:id:tsubaki_t1:20160127230030j:plain

このmetaファイルですが、初期設定では隠しファイルなので、表示してやるのが色々と良さそうです。
表示するにはメニューバー>ProjectSettings>EditorVersion ControlModeVisible Meta Filesに設定です。

f:id:tsubaki_t1:20160127230339j:plain

本当はエディタ拡張でやろうと思いましたが、普通に.meta更新した方が楽だし応用が効いたのでお蔵入り。

関連

madnesslabo.net