Unity的小工具

该文章介绍了一个Unity编辑器窗口脚本,用于自动化处理大量UI图像。脚本可以批量将.png和.jpg格式的纹理转换为Sprite,限制最大分辨率至1024,并开启压缩。这解决了手动操作的不便,提高了开发效率。
摘要由CSDN通过智能技术生成

最近项目工期紧,所以更新少了,不过我遇到一些问题,当我的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的图片

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

故渊9527

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值