| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | using dnlib.DotNet;using System.IO;using UnityEditor;using UnityEngine;namespace GFGEditor{    public class TextureAutoSet : EditorWindow    {        [MenuItem("Assets/*****设置文件夹以及子文件夹下面的图片压缩格式为ASTC", priority = 0)]        static void AutoSetASTC()        {            string[] guidArray = Selection.assetGUIDs;            foreach (var item in guidArray)            {                string selectFloder = AssetDatabase.GUIDToAssetPath(item);                DirectoryInfo root = new DirectoryInfo(selectFloder);                GetFloder(root);            }        }        static void GetFloder(DirectoryInfo root)        {            GetFile(root);            //查找子文件夹            DirectoryInfo[] array = root.GetDirectories();            //Debug.Log(root);            foreach (DirectoryInfo item in array)            {                GetFloder(item);            }        }        static void GetFile(DirectoryInfo root)        {            //DirectoryInfo root = new DirectoryInfo(path);            FileInfo[] fileDic = root.GetFiles();            foreach (var file in fileDic)            {                //sDebug.Log(file);                if (!file.FullName.EndsWith(".meta"))                {                    //Debug.Log("-------------" + file.FullName);                    //Debug.Log(Application.dataPath);                    SetPicFormat(file.FullName.Replace(Application.dataPath.Replace("Assets", ""), ""));                }            }        }        static void SetPicFormat(string path)        {            string onePath = GetImageProjectPath(path);            Debug.Log(onePath);            TextureImporter textureImporter = AssetImporter.GetAtPath(onePath) as TextureImporter;            if (textureImporter == null)                return;            if (textureImporter.mipmapEnabled == true)            {                textureImporter.mipmapEnabled = false;            }            ChangeTextureSetting(textureImporter);         }        public static void ChangeTextureSetting(TextureImporter textureImporter)        {            ChangeIphoneSetting(textureImporter);            ChangeAndroidSetting(textureImporter);            textureImporter.SaveAndReimport();        }        static void ChangeIphoneSetting(TextureImporter textureImporter)        {            TextureImporterPlatformSettings settings = textureImporter.GetPlatformTextureSettings("Iphone");            settings.overridden = true;            settings.maxTextureSize = 2048;            settings.format = TextureImporterFormat.ASTC_6x6;            textureImporter.SetPlatformTextureSettings(settings);        }        static void ChangeAndroidSetting(TextureImporter textureImporter)        {            TextureImporterPlatformSettings settings = textureImporter.GetPlatformTextureSettings("Android");            settings.overridden = true;            settings.maxTextureSize = 2048;            settings.format = TextureImporterFormat.ASTC_6x6;            textureImporter.SetPlatformTextureSettings(settings);        }        /// <summary>        /// 根据固定字符串得到资源路径        /// </summary>        /// <param name="fullName"></param>        /// <returns></returns>        static string GetImageProjectPath(string fullName)        {            string result = "";            int index = fullName.LastIndexOf("Assets");            result = fullName.Substring(index, fullName.Length - index);            return result;        }    }}
 |