12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- using System;
- using System.IO;
- using System.Linq;
- using UnityEditor;
- using UnityEngine;
- using AssetBank.Settings;
- using System.Collections.Generic;
- namespace AssetBank.Editor.Tools
- {
- public static class ScriptExporter
- {
- [MenuItem("Tools/Script Exporter/Export Scripts")]
- public static void ExportScripts()
- {
- var settings = ProjectExporterSettings.GetOrCreateSettings();
- var foldersToIgnore = settings.FoldersToIgnore;
- var scriptGuids = AssetDatabase.FindAssets("t:Script", new[] { "Assets" });
-
- var filteredScriptPaths = new List<string>();
- foreach (var guid in scriptGuids)
- {
- var path = AssetDatabase.GUIDToAssetPath(guid);
-
- var directoryName = Path.GetDirectoryName(path);
- if (foldersToIgnore.Any(folder => directoryName != null && directoryName.StartsWith(folder, StringComparison.OrdinalIgnoreCase))) continue;
-
- filteredScriptPaths.Add(path);
- }
-
- var savePath = EditorUtility.SaveFolderPanel("Choose destination to copy scripts into", Application.dataPath, "");
- if (string.IsNullOrEmpty(savePath)) return;
- foreach (var scriptPath in filteredScriptPaths)
- {
- CopyFile(scriptPath, savePath);
- }
- }
- private static void CopyFile(string sourcePath, string targetDir)
- {
- var relativePath = Path.GetRelativePath(Application.dataPath, sourcePath);
- var targetPath = Path.Combine(targetDir, relativePath);
- var dirName = Path.GetDirectoryName(targetPath);
- if (!Directory.Exists(dirName))
- {
- if (dirName != null) Directory.CreateDirectory(dirName);
- }
- File.Copy(sourcePath, targetPath, true);
- }
- }
- }
|