先將該腳本放到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));}
}