123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- using System.IO;
- using UnityEditor;
- using UnityEngine;
- using UnityEngine.UIElements;
- using AssetBank.DockableWindow;
- using System.Collections.Generic;
- using AssetBank.Editor.DockableWindow;
- using AssetBank.DockableWindow.UIHelper;
- namespace AssetBank.Editor.Tools
- {
- public class UnifiedExporter : EditorWindow
- {
- private VisualElement _rootElement;
- private VisualElement _contentContainer;
- private ProjectExporterController _controller;
- private GuidMapperExporter.ExportFor _exportFor;
- private Dictionary<string, AssetModel> _assetTrees;
-
- private bool _exportScenes = true;
- private bool _exportPrefabs = true;
- private bool _exportScriptableObjects = true;
- private bool _exportMetaFiles = true;
- private bool _exportSettings = true;
- private bool _exportScriptsIndependently;
- private bool _copyScripts = true;
- private bool _exportAllGuidMappers = true;
-
- [MenuItem("Tools/Unified Exporter")]
- public static void ShowWindow()
- {
- var wnd = GetWindow<UnifiedExporter>(true);
- wnd.titleContent = new GUIContent("Unified Exporter", EditorGUIUtility.IconContent("d_Profiler.GlobalIllumination").image);
- wnd.minSize = new Vector2(400, 300);
- }
- private void OnEnable()
- {
- _assetTrees = new Dictionary<string, AssetModel>();
- _controller = new ProjectExporterController();
- _rootElement = rootVisualElement;
- BuildUI();
- }
- private void BuildUI()
- {
- var scrollView = new ScrollView(ScrollViewMode.Vertical);
- _rootElement.Add(scrollView);
- _contentContainer = ProjectExporterUI.CreateMainContainer();
- scrollView.Add(_contentContainer);
- DrawToggles();
-
- var generateButton = ProjectExporterUI.CreateGenerateButton();
- _rootElement.Add(generateButton);
- generateButton.clicked += PerformExportOperation;
- }
- private void DrawToggles()
- {
- var scenesToggle = ProjectExporterUI.CreateToggle("Export Scenes", _exportScenes, evt => _exportScenes = evt.newValue);
- var prefabsToggle = ProjectExporterUI.CreateToggle("Export Prefabs", _exportPrefabs, evt => _exportPrefabs = evt.newValue);
- var soToggle = ProjectExporterUI.CreateToggle("Export Scriptable Objects", _exportScriptableObjects, evt => _exportScriptableObjects = evt.newValue);
- var metaToggle = ProjectExporterUI.CreateToggle("Export Meta Files", _exportMetaFiles, evt => _exportMetaFiles = evt.newValue);
- var settingsToggle = ProjectExporterUI.CreateToggle("Export Settings", _exportSettings, evt => _exportSettings = evt.newValue);
- var exportScriptsToggle = ProjectExporterUI.CreateToggle("Export Scripts Separately", _exportScriptsIndependently, evt => _exportScriptsIndependently = evt.newValue);
- var copyScriptsToggle = ProjectExporterUI.CreateToggle("Copy Scripts", _copyScripts, evt => _copyScripts = evt.newValue);
- var exportAllGuidMappersToggle = ProjectExporterUI.CreateToggle("Export All Guid Mappers", _exportAllGuidMappers, evt => _exportAllGuidMappers = evt.newValue);
- _contentContainer.Add(scenesToggle);
- _contentContainer.Add(prefabsToggle);
- _contentContainer.Add(soToggle);
- _contentContainer.Add(metaToggle);
- _contentContainer.Add(settingsToggle);
-
- var separator = ProjectExporterUI.CreateSeparator();
- _contentContainer.Add(separator);
- _contentContainer.Add(exportScriptsToggle);
- _contentContainer.Add(copyScriptsToggle);
-
- var separator2 = ProjectExporterUI.CreateSeparator();
- _contentContainer.Add(separator2);
- _contentContainer.Add(exportAllGuidMappersToggle);
- }
- private void PerformExportOperation()
- {
- var savePath = EditorUtility.SaveFolderPanel("Choose export destination", Application.dataPath, "");
- if (string.IsNullOrEmpty(savePath)) return;
-
- ExportAssetData(savePath);
- CopyScripts(savePath);
- ExportGuidMappers(savePath);
-
- EditorUtility.DisplayDialog("Bulk Export", "Bulk export process finished.", "OK");
- }
- private void ExportAssetData(string savePath)
- {
- if (_exportScenes) ExportAllOfType("Scenes", savePath);
- if (_exportPrefabs) ExportAllOfType("Prefabs", savePath);
- if (_exportScriptableObjects) ExportAllOfType("Scriptable Objects", savePath);
- if (_exportMetaFiles) ExportAllOfType("Meta Files", savePath);
- if (_exportSettings) ExportAllOfType("Settings", savePath);
- }
- private void CopyScripts(string savePath)
- {
- var exportPath = _exportScriptsIndependently ? Path.Combine(savePath, "Scripts") : Path.Combine(savePath, "Assets");
- ScriptExporter.ProcessAndCopyScripts(exportPath);
- }
-
- private void ExportGuidMappers(string savePath)
- {
- var exportPath = Path.Combine(savePath, "GuidMappers");
- if (_exportAllGuidMappers) GuidMapperExporter.BulkExport(exportPath);
- }
- private void ExportAllOfType(string type, string savePath)
- {
- if (!_assetTrees.ContainsKey(type))
- {
- ProjectExporterDataHelper.LoadAssetTree(_assetTrees, _controller, type);
- }
-
- var rootModel = _assetTrees[type];
- if (rootModel != null)
- {
- ProjectExporterDataHelper.SetChildrenSelection(rootModel, true);
- _controller.ExportAssets(rootModel, savePath);
- }
- }
- }
- }
|