Unity的小工具

最近项目工期紧,所以更新少了,不过我遇到一些问题,当我的UI/序列帧过多的时候,我需要去选中UI转换成Sprite,而且用shift选中的时候,文件夹中上百个文件,中间混进一个其他格式的文件我还得一个一个找出来,太麻烦了,我们是程序员,程序员就是用代码的方式解决问题,我想到了用代码批量转换,并且限制最大分辨率,开启压缩,代码如下:

public class ScanAndConvertTextures : EditorWindow
{
    [MenuItem("工具/UI转换工具")]
    private static void ShowWindow()
    {
        GetWindow(typeof(ScanAndConvertTextures));
    }

    private void OnGUI()
    {
        GUILayout.Label("将图片批量转换的工具,自动将02_UI下的png和jpg格式的图片转换为Sprite,并且分辨率改为1024", EditorStyles.boldLabel);

        if (GUILayout.Button("开始转换"))
        {
            ConvertTextures();
        }
    }
    private void ConvertTextures()
    {
        string folderPath = "Assets/02_UI";  // 修改为你想要扫描的文件夹路径

        string[] files = AssetDatabase.FindAssets("t:Texture2D", new[] { folderPath });

        foreach (var file in files)
        {
            string path = AssetDatabase.GUIDToAssetPath(file);
            TextureImporter importer = AssetImporter.GetAtPath(path) as TextureImporter;

            if (importer != null && (System.IO.Path.GetExtension(path) == ".png" || System.IO.Path.GetExtension(path) == ".jpg"))
            {
                if (importer.textureType != TextureImporterType.Sprite)
                {
                    importer.textureType = TextureImporterType.Sprite;
                    importer.spriteImportMode = SpriteImportMode.Single;

                    TextureImporterSettings textureSettings = new TextureImporterSettings();
                    importer.ReadTextureSettings(textureSettings);

                    textureSettings.maxTextureSize = 1024;
                    textureSettings.compressionQuality = (int)TextureCompressionQuality.Normal;
                    importer.crunchedCompression = true;
                    importer.SetTextureSettings(textureSettings);
                    importer.SaveAndReimport();
                    CrunchTexture(path);
                }
            }
        }

        Debug.Log("转换成功");
    }

    private void CrunchTexture(string path)
    {
        var texture = AssetDatabase.LoadAssetAtPath<Texture2D>(path);
        if (texture != null)
        {
            EditorUtility.CompressTexture(texture, TextureFormat.RGBA32, TextureCompressionQuality.Normal);
        }
    }
}

该脚本会在unity上方的工具栏中生成一项选择,像这样:

不过要注意:1、这个脚本只转换.png或者.jpg格式的图片(当然,你可以自己改)

                      2、这个脚本会忽略已经转换过Sprite的图片

猜你喜欢

转载自blog.csdn.net/k253316/article/details/131421511
今日推荐