网上找了半天,没一个能用的,干脆自己写个,直接拷贝这个脚本就行

这个是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(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;

}

}

 

 

 

---------------------------------------------------已经不需要这样做了----------------------------------------------------------

 

新版本直接设置

 

推荐文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。