public class RenameTool:EditorWindow
{
private Vector2 scrollPos;
private int charSize;
private string originStr;
private string targetStr;
[MenuItem("CustomEditorWindow/RenameTool")]
private static void OpenWindow() {
GetWindow<RenameTool>("Rename Tool").Show();
}
private static void Rename(string oreplaceStr,string treplaceStr)
{
foreach (UnityEngine.Object o in Selection.objects)
{
string path = AssetDatabase.GetAssetPath(o);
string head = path.Substring(0, path.LastIndexOf('/'));
string tail = path.Substring(path.LastIndexOf("/") + 1);
string name=tail.Replace(oreplaceStr, treplaceStr);
name=name.Substring(0, name.LastIndexOf('.'));
Debug.Log(AssetDatabase.RenameAsset(path, name));
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
}
}
private void OnGUI()
{
scrollPos = GUILayout.BeginScrollView(scrollPos);
{
charSize = GUI.skin.label.fontSize;
GUILayout.Space(10);
GUI.skin.label.fontSize = 24;
GUI.skin.label.alignment = TextAnchor.MiddleCenter;
GUILayout.Label("RenameTool");
GUI.skin.label.fontSize = charSize;
GUI.skin.label.alignment = TextAnchor.MiddleLeft;
GUI.color = Color.white;
GUILayout.Space(20);
}
GUILayout.BeginVertical();
{
#region text input
GUILayout.BeginHorizontal();
{
GUILayout.Label("OriginStr");
GUILayout.FlexibleSpace();
originStr = GUILayout.TextField(originStr, GUILayout.Width(140));
}
GUILayout.EndHorizontal();
GUILayout.Space(10);
GUILayout.BeginHorizontal();
{
GUILayout.Label("TargetStr");
GUILayout.FlexibleSpace();
targetStr = GUILayout.TextField(targetStr, GUILayout.Width(140));
}
GUILayout.EndHorizontal();
#endregion
#region button
GUILayout.Space(30);
bool hasObject = (Selection.objects.Length > 0);
GUI.enabled = hasObject;
GUILayout.FlexibleSpace();
if (!hasObject)
{
GUI.color = Color.red;
GUILayout.Button("No Selected Objects!");
GUI.color = Color.white;
}
else
{
if (GUILayout.Button("Rename"))
{
Rename(originStr, targetStr);
}
}
GUILayout.Space(20);
#endregion
}
GUILayout.EndVertical();
GUILayout.EndScrollView();
}
}