批量修改预制体的名字

    [MenuItem("Tool/RenamePre")]
    public static void ToRename()
    {

        UnityEngine.Object[] m_objects = Selection.GetFiltered(typeof(UnityEngine.Object), SelectionMode.DeepAssets);//选择对象下的所有文件

        //TopLevel:仅返回最顶层选择的变换;其他选择的子对象将被过滤出。


        //Deep:返回选择和所有选择的子变换。

        //ExcludePrefab:从选择中排除任何预制。


        //Editable:排除任何对象不得修改。


        //Assets:仅返回资源目录中的资源对象。


        //DeepAssets:如果选择包含文件夹,也包含所有资源和子目录。

        foreach (UnityEngine.Object item in m_objects)
        {

            if (Path.GetExtension(AssetDatabase.GetAssetPath(item)) != "")//判断路径是否为空
            {
                string path = AssetDatabase.GetAssetPath(item);
                string txt = Resources.Load<TextAsset>("Language/English/World Cup").text;//通过读取配置表来修改预制体的名字
                string[] contents = txt.Trim().Split(new string[] { "\r\n" }, StringSplitOptions.None);
                string headerinfo = contents[0];
                string[] headerFields = headerinfo.Split('\t');
                for (int i = 1; i < contents.Length; i++)
                {
                    string[] dataFields = contents[i].Split('\t');
                    print(dataFields[0]);
                    AssetDatabase.RenameAsset(path, dataFields[0].Trim());
                }
            }
        }

        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();
    }











猜你喜欢

转载自blog.csdn.net/m0_37471675/article/details/80452617
今日推荐