先将该脚本放到Editor目录下
如何使用:选中目录,然后点击Tool里面的批量修改按钮
using System;
using UnityEngine;
using UnityEditor;
using System.IO;
using System.Linq;
/// <summary>
/// 此工具可以批量将图片类型修改为精灵
/// </summary>
public class TextureTypeModifier
{
[MenuItem("Tools/批量修改图片为Sprite(2D and UI)", false, 20)]
private static void ConvertSelectedFolderToSprite()
{
// 获取选中的文件夹路径
string folderPath = AssetDatabase.GetAssetPath(Selection.activeObject);
if (!AssetDatabase.IsValidFolder(folderPath))
{
EditorUtility.DisplayDialog("错误", "请选择一个文件夹!", "确定");
return;
}
// 递归获取所有图片文件
string[] imagePaths = Directory.GetFiles(folderPath, "*.*", SearchOption.AllDirectories)
.Where(file =>
file.EndsWith(".png", StringComparison.OrdinalIgnoreCase) ||
file.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) ||
file.EndsWith(".jpeg", StringComparison.OrdinalIgnoreCase))
.ToArray();
int modifiedCount = 0;
// 批量修改
foreach (string imagePath in imagePaths)
{
if (imagePath.EndsWith(".meta")) continue;
TextureImporter importer = AssetImporter.GetAtPath(imagePath) as TextureImporter;
if (importer != null&& importer.textureType==TextureImporterType.Default && importer.textureType != TextureImporterType.Sprite)
{
importer.textureType = TextureImporterType.Sprite;
importer.spriteImportMode = SpriteImportMode.Single;
importer.mipmapEnabled = false;
importer.SaveAndReimport();
modifiedCount++;
}
}
AssetDatabase.Refresh();
EditorUtility.DisplayDialog("完成",
$"已将 {modifiedCount} 张图片转换为 Sprite(2D and UI)\n目录: {folderPath}", "确定");
}
// 验证菜单项是否可用(仅当选中文件夹时显示)
[MenuItem("Tools/批量修改图片为Sprite(2D and UI)", true, 20)]
private static bool ValidateConvertSelectedFolderToSprite()
{
return Selection.activeObject != null &&
AssetDatabase.IsValidFolder(AssetDatabase.GetAssetPath(Selection.activeObject));
}
}