对大量资源进行重命名,资源名称只有部分区别时,写个脚本既可以快速操作,同时又可以避免拼写错误。
public enum Language {
Unknow = -1,
Chinese = 0,
USA = 1,
English = 2,
}
public class MyTools : EditorWindow
{
static Object[] objs;
static MyTools window;
Language country = Language.Unknow;
string levelName = "Alpha", newName;
private void OnGUI()
{
AssetRename();
}
[MenuItem("Assets/MyTools/AssetRename")]
public static void LoadingIconName()
{
window = (MyTools)GetWindow(typeof(MyTools));
window.titleContent.text = "AssetRename";
window.position = new Rect(PlayerSettings.defaultScreenWidth / 2, PlayerSettings.defaultScreenHeight / 2, 400, 160);
window.Show();
}
private void AssetRename()
{
objs = Selection.objects;
if (objs != null && objs.Length > 0)
{
GUILayout.BeginVertical();
GUILayout.BeginHorizontal();
GUILayout.Label("NewName:", GUILayout.MinWidth(15));
levelName = EditorGUILayout.TextField(levelName, GUILayout.ExpandWidth(true));
GUILayout.EndHorizontal();
GUILayout.Space(10);
country = (Language)EditorGUILayout.EnumPopup("选择对应国家(默认为空)", country, GUILayout.Width(position.width - 15), GUILayout.Height(20));
GUILayout.Space(10);
if (GUILayout.Button("确认"))
{
string path = AssetDatabase.GetAssetPath(objs[0]);
newName = levelName + "_" + country.ToString();
AssetDatabase.RenameAsset(path, newName);
AssetDatabase.SaveAssets();
window.Close();
AssetDatabase.Refresh();
}
GUILayout.EndVertical();
}
}
}