Unity

Unityへ同名アセットファイルをドラッグ&ドロップした時に上書きできるようにする拡張

Unityへ同名アセットファイルをドラッグ&ドロップした時に上書きできるようにする拡張

通常、Unityに同じ名前のファイルをドラッグ&ドロップしたとしても新しいファイルが作られてしまい、上書きはできません。

そのため、metaファイルの内容を維持したままファイルの上書きをするのにMacのFinderやWindowsのExplorerを利用している方も多いのではないでしょうか。

今回、新しいファイルで置き換えるか両方とも残すか選べるようにする拡張を作成したので紹介します。

同じファイル名なら置き換えも選べるようになる同じファイル名なら置き換えも選べるようになる

ダウンロード

GitHubよりダウンロードできます

特徴

従来の拡張

新しいファイルが作成されてしまうこと自体は防ぐことができません。

例えば「Effect.png」というファイルをドラッグ&ドロップした時、既に存在する場合は「Effect 1.png」というファイルが作られます。

このように後ろに番号が付いたファイルが追加されたか調べることで、上書きを実現している拡張は今までも存在しました。

しかし、対応できないケースがあります。

問題は既にナンバリングが振られているファイル群だ。このナンバリングを付与する仕組みは、ファイル末尾にナンバーが振られている場合はナンバーを増やしてコピーしてしまう。その為、例えばitem1.png のようなファイル名の場合、 item2.png としてしまう。こうなると、item2を追加したのか、追加したら2になったのか判断ができない為、上書きコピーする事ができない。 – テラシュールブログから引用

ファイルの中身を比較する

上記の問題に対応するため、AssetPostprocessorを利用し新しく作成されたファイルの中身と、ドラッグ&ドロップしたファイルの中身を比較して、一致していたら「中身が同じなのに別の名前でインポートされた」と判断するようにしました。

これによって、どのように番号が振られたとしても対応することができます。

上書きを実行した場合はUnityによって追加されたファイルは削除します。

複数ファイル対応

複数ファイルのドラッグ&ドロップにも対応しています。

注意点

他にAssetPostprocessorを利用している場合

Overwriterによってファイルが削除された後、他のPostprocessorが作動することがあります。

その場合、処理対象のファイルが存在するかどうか調べてから処理しないとエラーになります。

プレハブは未対応

NestedPrefabの影響かと思われますが、インポートが終わらなくなる問題があるため除外しています。

同じ内容のファイルを同時にインポートできない

ファイルの中身を比較している関係上、全く同じ内容のファイルを一度に2つ以上インポートしようとすると上書きは動作しません。

同じ内容のファイルを同時にインポートできない

インポートしようとした場合はこのように拡張が停止するメッセージが出るため、そのままインポートを実行すれば新しくファイルが作られます。

そもそも同じ内容のファイルを複数インポートすること自体、アセットを使いまわしてデータを削減する考え方に反しているので気にしないことにしています。

あくまで同時にインポートしようとした場合なので、1つずつインポートすれば上書きも可能です。