網上找了半天,沒一個能用的,干脆自己寫個,直接拷貝這個腳本就行
這個是ios版本的,安卓的話寫在注釋里面,去掉注釋就能用了
現在ios支持一種新格式叫astc比原本的pvrtc壓縮比更高,而且質量更高,但是iphone5及更老的機子不支持,所以不打算支持iphone5的話,可以用新格式,不然還是用pvrtc
我試了下,感覺6*6的astc的性價比最高
下面放腳本
using System.Collections; using System.Collections.Generic; using System.IO; using UnityEditor; using UnityEngine; 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(".png") || file.FullName.EndsWith(".jpg") || file.FullName.EndsWith(".tga") || file.FullName.EndsWith(".psd") || file.FullName.EndsWith(".PSD") || file.FullName.EndsWith(".exr") || file.FullName.EndsWith(".tif")) { //Debug.Log("-------------" + file.FullName); //Debug.Log(Application.dataPath); SetPicFormat(file.FullName.Replace(Application.dataPath.Replace("Assets",""),"")); } } } static void SetPicFormat(string path) { Debug.Log(path); TextureImporter importer = AssetImporter.GetAtPath(path) as TextureImporter; if (importer.mipmapEnabled == true) { importer.mipmapEnabled = false; } //判斷圖片大小 Texture2D texture = AssetDatabase.LoadAssetAtPath<Texture2D>(path); int textureSize = Mathf.Max(texture.height, texture.width); //Debug.Log(textureSize); int SizeType = FitSize(textureSize); //Android iPhone if(importer.DoesSourceTextureHaveAlpha()) { //ios版本 importer.SetPlatformTextureSettings("iPhone", SizeType, TextureImporterFormat.ASTC_RGBA_6x6); //安卓版本 //importer.SetPlatformTextureSettings("Android", SizeType, TextureImporterFormat.ETC2_RGBA8); } else { //ios版本 importer.SetPlatformTextureSettings("iPhone", SizeType, TextureImporterFormat.ASTC_RGB_6x6); //安卓版本 //importer.SetPlatformTextureSettings("Android", SizeType, TextureImporterFormat.ETC2_RGB4); } } static int[] formatSize = new int[]{32,64,128,256,512,1024,2048,4096}; static int FitSize(int picValue) { foreach (var one in formatSize) { if (picValue <= one) { return one; } } return 1024; } }