From fe96c4ff3456f0896ab893f11df816b41ca29cb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E9=93=AE?= <834207172@qq.com> Date: Wed, 23 Jul 2025 10:01:24 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90m=E3=80=91=E4=BF=AE=E6=94=B9=E6=89=93?= =?UTF-8?q?=E5=8C=85=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Editor/YooAsset/ShaderVariantCollector.cs | 57 +++++++++++++------ Assets/00.StaryEvo/package.json | 2 +- 2 files changed, 42 insertions(+), 17 deletions(-) diff --git a/Assets/00.StaryEvo/Editor/YooAsset/ShaderVariantCollector.cs b/Assets/00.StaryEvo/Editor/YooAsset/ShaderVariantCollector.cs index fe3530c..e0c0aba 100644 --- a/Assets/00.StaryEvo/Editor/YooAsset/ShaderVariantCollector.cs +++ b/Assets/00.StaryEvo/Editor/YooAsset/ShaderVariantCollector.cs @@ -21,6 +21,7 @@ public static class ShaderVariantCollector } private const float WaitMilliseconds = 3000f; + private const float SleepMilliseconds = 3000f; // private static string _savePath; // private static string _packageName; @@ -35,6 +36,14 @@ public static class ShaderVariantCollector // 新增任务队列 private static Queue _taskQueue = new Queue(); private static CollectTask _currentTask; + public static string OriginalScenePath { get; set; } + + static ShaderVariantCollector() + { + // 保存当前场景路径 + OriginalScenePath = EditorSceneManager.GetActiveScene().path; + } + // 新增初始化方法 private static void InitializeTask(CollectTask task) @@ -48,6 +57,7 @@ public static class ShaderVariantCollector task.Steps = ESteps.Prepare; } + /// /// 开始收集 /// @@ -74,8 +84,13 @@ public static class ShaderVariantCollector { EditorApplication.update -= EditorUpdate; EditorApplication.update += EditorUpdate; - } + // 聚焦到游戏窗口 + //EditorTools.FocusUnityGameWindow(); + + // 创建临时测试场景 + CreateTempScene(); + } } private static void EditorUpdate() @@ -86,6 +101,7 @@ public static class ShaderVariantCollector _currentTask = _taskQueue.Dequeue(); InitializeTask(_currentTask); } + if (_currentTask == null) return; @@ -109,12 +125,12 @@ public static class ShaderVariantCollector if (_currentTask.Steps == ESteps.CollectVariants) { - int count = Mathf.Min(_currentTask.ProcessMaxNum, _currentTask.AllMaterials.Count); - List range = _currentTask.AllMaterials.GetRange(0, count); + int count = Mathf.Min(_currentTask.ProcessMaxNum, _currentTask.AllMaterials.Count); + List range = _currentTask.AllMaterials.GetRange(0, count); _currentTask.AllMaterials.RemoveRange(0, count); CollectVariants(range); - if ( _currentTask.AllMaterials.Count > 0) + if (_currentTask.AllMaterials.Count > 0) { _currentTask.ElapsedTime = Stopwatch.StartNew(); _currentTask.Steps = ESteps.CollectSleeping; @@ -132,14 +148,14 @@ public static class ShaderVariantCollector { DestroyAllSpheres(); _currentTask.ElapsedTime.Stop(); - _currentTask.Steps = ESteps.CollectVariants; + _currentTask.Steps = ESteps.CollectVariants; } } - if ( _currentTask.Steps == ESteps.WaitingDone) + if (_currentTask.Steps == ESteps.WaitingDone) { // 注意:一定要延迟保存才会起效 - if ( _currentTask.ElapsedTime.ElapsedMilliseconds > WaitMilliseconds) + if (_currentTask.ElapsedTime.ElapsedMilliseconds > WaitMilliseconds) { _currentTask.ElapsedTime.Stop(); _currentTask.Steps = ESteps.None; @@ -150,12 +166,22 @@ public static class ShaderVariantCollector UnityEngine.Debug.Log($"搜集SVC完毕!"); - _currentTask.CompletedCallback?.Invoke(); - _currentTask = null; + _currentTask.CompletedCallback?.Invoke(); + _currentTask = null; - // 如果队列还有任务,立即触发下一次更新 - if (_taskQueue.Count > 0) - EditorApplication.QueuePlayerLoopUpdate(); + // 如果队列还有任务,立即触发下一次更新 + if (_taskQueue.Count > 0) + { + EditorApplication.QueuePlayerLoopUpdate(); + } + else + { + // 恢复原场景 + if (!string.IsNullOrEmpty(OriginalScenePath)) + { + EditorSceneManager.OpenScene(OriginalScenePath); + } + } } } } @@ -168,7 +194,8 @@ public static class ShaderVariantCollector private static List GetAllMaterials() { // 获取所有打包的资源 - CollectResult collectResult = AssetBundleCollectorSettingData.Setting.BeginCollect(_currentTask.PackageName, false, false); + CollectResult collectResult = + AssetBundleCollectorSettingData.Setting.BeginCollect(_currentTask.PackageName, false, false); // 搜集所有材质球 int progressValue = 0; @@ -289,7 +316,6 @@ public static class ShaderVariantCollector } - // 新增任务类 private class CollectTask { @@ -302,5 +328,4 @@ public static class ShaderVariantCollector public List AllMaterials; public List AllSpheres = new List(); } -} - +} \ No newline at end of file diff --git a/Assets/00.StaryEvo/package.json b/Assets/00.StaryEvo/package.json index 90cbedc..3eaa791 100644 --- a/Assets/00.StaryEvo/package.json +++ b/Assets/00.StaryEvo/package.json @@ -1,6 +1,6 @@ { "name": "com.staryevo.main", - "version": "1.3.20", + "version": "1.3.21", "displayName": "00.StaryEvo", "description": "This is an Framework package(后台服务器版本,端口9527)", "unity": "2021.3",