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;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM