Unity Editor 小工具 选择文件夹批量修改Texture属性

本文介绍了一款工具,用于简化工作流程,批量将选定文件夹下的图片资产转换为Sprite2D格式,提高效率并减少重复设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作为笔记记录下:

    工作中经常大量导入图片,但文件夹比较多,如果一个设置比较麻烦,所以就写连这个小工具。批量修改选中文件夹下的所有图片属性转为 Sprite2D

 [MenuItem("Tools/SetTexture To Sprite")]
    public static void SelectTex()
    {
        Object[] textures = Selection.GetFiltered<Texture2D>(SelectionMode.DeepAssets);
        int index = 0;
        int total = textures.Length;
        foreach (Texture2D texture in textures)
        {
            string path = AssetDatabase.GetAssetPath(texture);
            TextureImporter texImporter = AssetImporter.GetAtPath(path) as TextureImporter;
            //不处理类型为“Lightmap”的Texture
            if ("Lightmap" != texImporter.textureType.ToString()) 
            {
                texImporter.textureType = TextureImporterType.Sprite;
                AssetDatabase.ImportAsset(path);
            }
            EditorUtility.DisplayCancelableProgressBar("执行中...", index+"/" + total, (float)index / total);
            index++;
        }
        EditorUtility.ClearProgressBar();
        AssetDatabase.Refresh();
    }

 

### 批量设置图片为无压缩 在 Unity 中实现批量设置纹理资源不被压缩可以通过编写自定义编辑器脚本来完成。对于每种平台,可以调整 `TextureImporter` 的属性来确保图像不会被压缩。 当处理多张纹理时,通过编程方式访问这些资产并更改其导入设置是一种高效方法。下面是一个具体的 Python 脚本例子,用于遍历项目中的所有纹理文件并将它们设为未压缩状态: ```csharp using UnityEngine; using UnityEditor; public class BatchUncompressedTextures : MonoBehaviour { [MenuItem("Tools/Batch Set Uncompressed Textures")] static void BatchSetUncompressed() { string[] guids = AssetDatabase.FindAssets("t:texture"); foreach (string guid in guids) { string path = AssetDatabase.GUIDToAssetPath(guid); TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter; if (textureImporter != null) { // 设置默认平台的纹理设置 var defaultSettings = new TextureImporterPlatformSettings(); defaultSettings.overridden = true; defaultSettings.format = TextureImporterFormat.RGBA32; // 不压缩格式 textureImporter.SetPlatformTextureSettings(defaultSettings); // 特定于Android平台的设置 var androidSettings = textureImporter.GetPlatformTextureSettings("Android"); androidSettings.overridden = true; androidSettings.format = TextureImporterFormat.RGBA32; textureImporter.SetPlatformTextureSettings(androidSettings); // 特定于iOS平台的设置 var iosSettings = textureImporter.GetPlatformTextureSettings("iPhone"); iosSettings.overridden = true; iosSettings.format = TextureImporterFormat.RGBA32; textureImporter.SetPlatformTextureSettings(iosSettings); EditorUtility.DisplayProgressBar("Processing", "Setting uncompressed textures...", (float)(Array.IndexOf(guids, guid)) / guids.Length); AssetDatabase.ImportAsset(path); // 应用更改 EditorUtility.ClearProgressBar(); } } Debug.Log("All selected textures have been set to uncompressed."); } } ``` 此代码片段会创建一个新的菜单项,在点击后执行批处理操作,将选定范围内的所有纹理转换成指定的非压缩格式 RGBA32[^1]。请注意,这段代码应该保存在一个 `.cs` 文件中,并放置在项目的 `Editor` 文件夹下以便能够正常使用 Unity 编辑器功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值