欢迎光临散文网 会员登陆 & 注册

Unity更名插件,增加前后缀,删除指定字符段

2023-06-25 14:33 作者:zhou-shan  | 我要投稿

直接上源码吧,有注释


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()

    {

        //新建一个窗口

        GetWindow<Rename>("Batch Rename");

    }

    //新建窗口的逻辑实现

    private void OnGUI()

    {

        //创建一个可输入字符段的窗口,窗口名为“前缀”。并将输入的字符串赋值给prefix

        prefix = EditorGUILayout.TextField("前缀:", prefix);

        //创建一个可输入字符段的窗口,窗口名为“后缀”。并将输入的字符串赋值给postfix

        postfix = EditorGUILayout.TextField("后缀:", postfix);

        //空格20

        GUILayout.Space(20f);


        

        //创建一个名为“添加前后缀”的按钮,当按钮被点击时返回true

        if (GUILayout.Button("添加前后缀"))

        {

            RenameAllSelect();

        }

        //空格40

        GUILayout.Space(40f);

        //创建一个可输入字符段的窗口,窗口名为“需要删除的字符段”。并将输入的字符串赋值给deleString

        deleString = EditorGUILayout.TextField("需要删除的字符段:", deleString);

        //空格20

        GUILayout.Space(20f);

        //创建一个名为“删除”的按钮,当按钮被点击时返回true

        if (GUILayout.Button("删除"))

        {

            DeletAllSelect();

        }

     


    }

    private void RenameAllSelect()

    {

        //取得选中的对象数组

        selectedassets = Selection.objects;

        //判空

        if(selectedassets.Length == 0)

            Debug.Log("选中资产再操作!");

        else

        {

            string Path;

            string Name;

            string tempname;

            //这个遍历我第一次见 哈哈哈

            foreach(Object obj in selectedassets)

            {

                //获取原命名

                Name = obj.name;

                //获取对象文件路径

                Path = AssetDatabase.GetAssetPath(obj);

                //设置修改后命名为前缀+原命名+后缀

                tempname = prefix + Name + postfix;

                //指定路径,修改文件命名为tempname

                AssetDatabase.RenameAsset(Path , tempname);

            }            

        }

    }

    private void DeletAllSelect()

    {

        selectedassets = Selection.objects;

        if(selectedassets.Length == 0)

          

            Debug.Log("选中资产再操作!");

        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("删除字符段不能为空!");                

            }            

        }

    }

}


Unity更名插件,增加前后缀,删除指定字符段的评论 (共 条)

分享到微博请遵守国家法律