Unity更名插件,增加前后綴,刪除指定字符段
直接上源碼吧,有注釋

using UnityEditor;
public class Rename : EditorWindow
{
? ? private string prefix = null;
? ? private string postfix = null;
? ? private string deleString = null;
? ? private Object[] selectedassets;
? ? //編輯unity編輯器窗口的顯示信息
? ? [MenuItem("Tools/Batch Rename")]
? ? public static void ShowWindow()
? ? {
? ? ? ? //新建一個(gè)窗口
? ? ? ? GetWindow<Rename>("Batch Rename");
? ? }
? ? //新建窗口的邏輯實(shí)現(xiàn)
? ? private void OnGUI()
? ? {
? ? ? ? //創(chuàng)建一個(gè)可輸入字符段的窗口,窗口名為“前綴”。并將輸入的字符串賦值給prefix
? ? ? ? prefix = EditorGUILayout.TextField("前綴:", prefix);
? ? ? ? //創(chuàng)建一個(gè)可輸入字符段的窗口,窗口名為“后綴”。并將輸入的字符串賦值給postfix
? ? ? ? postfix = EditorGUILayout.TextField("后綴:", postfix);
? ? ? ? //空格20
? ? ? ? GUILayout.Space(20f);
? ? ? ??
? ? ? ? //創(chuàng)建一個(gè)名為“添加前后綴”的按鈕,當(dāng)按鈕被點(diǎn)擊時(shí)返回true
? ? ? ? if (GUILayout.Button("添加前后綴"))
? ? ? ? {
? ? ? ? ? ? RenameAllSelect();
? ? ? ? }
? ? ? ? //空格40
? ? ? ? GUILayout.Space(40f);
? ? ? ? //創(chuàng)建一個(gè)可輸入字符段的窗口,窗口名為“需要?jiǎng)h除的字符段”。并將輸入的字符串賦值給deleString
? ? ? ? deleString = EditorGUILayout.TextField("需要?jiǎng)h除的字符段:", deleString);
? ? ? ? //空格20
? ? ? ? GUILayout.Space(20f);
? ? ? ? //創(chuàng)建一個(gè)名為“刪除”的按鈕,當(dāng)按鈕被點(diǎn)擊時(shí)返回true
? ? ? ? if (GUILayout.Button("刪除"))
? ? ? ? {
? ? ? ? ? ? DeletAllSelect();
? ? ? ? }
? ? ?
? ? }
? ? private void RenameAllSelect()
? ? {
? ? ? ? //取得選中的對(duì)象數(shù)組
? ? ? ? selectedassets = Selection.objects;
? ? ? ? //判空
? ? ? ? if(selectedassets.Length == 0)
? ? ? ? ? ? Debug.Log("選中資產(chǎn)再操作!");
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? string Path;
? ? ? ? ? ? string Name;
? ? ? ? ? ? string tempname;
? ? ? ? ? ? //這個(gè)遍歷我第一次見 哈哈哈
? ? ? ? ? ? foreach(Object obj in selectedassets)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? //獲取原命名
? ? ? ? ? ? ? ? Name = obj.name;
? ? ? ? ? ? ? ? //獲取對(duì)象文件路徑
? ? ? ? ? ? ? ? Path = AssetDatabase.GetAssetPath(obj);
? ? ? ? ? ? ? ? //設(shè)置修改后命名為前綴+原命名+后綴
? ? ? ? ? ? ? ? tempname = prefix + Name + postfix;
? ? ? ? ? ? ? ? //指定路徑,修改文件命名為tempname
? ? ? ? ? ? ? ? AssetDatabase.RenameAsset(Path , tempname);
? ? ? ? ? ? }? ? ? ? ? ??
? ? ? ? }
? ? }
? ? private void DeletAllSelect()
? ? {
? ? ? ? selectedassets = Selection.objects;
? ? ? ? if(selectedassets.Length == 0)
? ? ? ? ??
? ? ? ? ? ? Debug.Log("選中資產(chǎn)再操作!");
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? string Path;
? ? ? ? ? ? string Name;
? ? ? ? ? ? string tempname;
? ? ? ? ? ? foreach(Object obj in selectedassets)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Name = obj.name;
? ? ? ? ? ? ? ? Path = AssetDatabase.GetAssetPath(obj);
? ? ? ? ? ? ? ? if(deleString.Length != 0)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? //將指定的deleString字段替換為空,即為刪除
? ? ? ? ? ? ? ? ? ? tempname = Name.Replace(deleString , "");? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? AssetDatabase.RenameAsset(Path , tempname);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? Debug.Log("刪除字符段不能為空!");? ? ? ? ? ? ? ??
? ? ? ? ? ? }? ? ? ? ? ??
? ? ? ? }
? ? }
}