unity批量设置图片为etc2格式或者astc格式
网上找了半天,没一个能用的,干脆自己写个,直接拷贝这个脚本就行
这个是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; } }
---------------------------------------------------已经不需要这样做了----------------------------------------------------------
新版本直接设置