あらまし
Unity で Asset (例えば画像ファイル) を入れ替える際に Finder や Explorer から
ドラッグアンドドロップ を行いファイルを入れ替えることがあると思う
その際にファイル名が **** 1
になってしまい、前のファイルを消して
再度ファイル名を変更したり
Reveal in Finder
を用いて画像を上書きしたり面倒なことがある
Assets メニューに置換メニューを追加
ファイルを右クリックした際のメニューに Replace Selection Asset
を追加し
これを選ぶことで、同じ拡張子のフィルターがかかったファイル選択パネルが表示される
開いたパネルよりファイルを選ぶことでファイル名が異なっていたとしても
元のファイル名に置換してコピーをする
これにより、GUIDも変更されず meta も更新されないためファイル更新時の手間を減らすことができる
複数ファイルを選択した場合でも、1ファイルずつ置換するファイルを選択することができる
ソースコード
Windows PC が無いため、動作確認を Mac で行っておりWindows PC で動作するか不明
using UnityEditor; using UnityEngine; using System.IO; public class ReplaceAssetMenu { [MenuItem("Assets/Replace Selection Asset")] private static void Replace() { var objects = Selection.objects; foreach (var selectObj in objects) { var path = AssetDatabase.GetAssetPath(selectObj); if (string.IsNullOrEmpty(path)) continue; var fullPath = Application.dataPath.Replace("/Assets", "/" + path); var ext = Path.GetExtension(path).Substring(1); var fileName = Path.GetFileName(path); var sourcePath = EditorUtility.OpenFilePanel("Select Replace Asset\n" + fileName, "", ext); if (string.IsNullOrEmpty(sourcePath)) continue; File.Copy(sourcePath, fullPath, true); } AssetDatabase.Refresh(); } }