Unity 3D

来源:互联网 发布:小学数学必背常用数据 编辑:程序博客网 时间:2024/05/22 00:43

Unity 3D - 编辑器扩展之修改PackingTag :

这里写图片描述

这里写图片描述

C#代码 :

注意 :

代码中屏蔽了 SaveAndReimport 方法 , 如果项目中有自动修改PackingTag的脚本 , 可以使用SaveAndReimport方法重新导入.

链接 :

导入资源自动设置PackingTag链接

using System.Collections.Generic;using UnityEngine;using UnityEditor;using System.IO;using System.Linq;    public class myTools    {        [MenuItem("myTools/修改资源的PackingTag")]        static public void SetResourcePackingTag()        {            EditorWindow.GetWindow<SetResourcePackingTag>("修改资源的PackingTag").Show();        }    }    public class SetResourcePackingTag : EditorWindow    {        private List<string> textureList = new List<string>();        Vector2 scrollPos = Vector2.zero;        private void StartCheck()        {            List<string> withoutExtensions = new List<string>() { ".png",".jpg" };            string[] files = Directory.GetFiles(Application.dataPath + "/GameRes/NewUI", "*.*", SearchOption.AllDirectories)                .Where(s => withoutExtensions.Contains(Path.GetExtension(s).ToLower())).ToArray();            foreach (string file in files)            {                string strFile = file.Substring(file.IndexOf("Asset")).Replace('\\', '/');                textureList.Add(strFile);            }        }        void OnGUI()        {            EditorGUILayout.BeginHorizontal();            EditorGUI.BeginChangeCheck();            if (GUILayout.Button("搜索出所有New UI", GUILayout.Width(200), GUILayout.Height(50)))            {                textureList.Clear();                StartCheck();            }            if (GUILayout.Button("修改所有PackingTag", GUILayout.Width(200), GUILayout.Height(50)))            {                float count = 0;                foreach (string t in textureList)                {                    count++;                    EditorUtility.DisplayProgressBar("Processing...", "替换中... ("+count+" / "+textureList.Count+")", count / textureList.Count);                    TextureImporter ti = AssetImporter.GetAtPath(t) as TextureImporter;                    //可以重新导入                    //ti.SaveAndReimport();                    string dirName = Path.GetDirectoryName(t);                    string folderStr = Path.GetFileName(dirName);                    ti.spritePackingTag = folderStr;                }                EditorUtility.ClearProgressBar();            }            EditorGUI.EndChangeCheck();            EditorGUILayout.EndHorizontal();            scrollPos = EditorGUILayout.BeginScrollView(scrollPos);            foreach (string t in textureList)            {                EditorGUILayout.BeginHorizontal();                string path = t.Substring(t.IndexOf("NewUI"));                EditorGUILayout.LabelField("文件路径 : "+path,GUILayout.Width(400));                string dirName = Path.GetDirectoryName(path);                string folderStr = Path.GetFileName(dirName);                Texture2D texture = (Texture2D)AssetDatabase.LoadAssetAtPath(t, typeof(Texture2D));                EditorGUILayout.ObjectField(texture, typeof(Texture2D), false);                TextureImporter ti = AssetImporter.GetAtPath(t) as TextureImporter;                EditorGUILayout.LabelField("当前PackingTag类型 :   [" + ti.spritePackingTag + "]");                EditorGUILayout.Space();                if (ti.spritePackingTag != folderStr)                {                    EditorGUILayout.LabelField("错误 !!!  文件夹名字 : [" + folderStr + "]");                }                else                {                    EditorGUILayout.LabelField("");                }                if (GUILayout.Button("修改PackingTag", GUILayout.Width(150)))                {                    //可以重新导入                    //ti.SaveAndReimport();                    ti.spritePackingTag = folderStr;            }                EditorGUILayout.EndHorizontal();                EditorGUILayout.Space();            }            EditorGUILayout.EndScrollView();        }    }
原创粉丝点击