From b61dff07178e10ea1b7f1598fe901bc37fb0fe04 Mon Sep 17 00:00:00 2001 From: CatImmortal <1304085906@qq.com> Date: Thu, 2 Feb 2023 18:29:36 +0800 Subject: [PATCH] =?UTF-8?q?[refactor]:=E9=87=8D=E6=9E=84=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=EF=BC=8C=E5=B0=86=E5=90=88=E5=B9=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=9A=84=E6=9D=A1=E4=BB=B6=E5=8A=A0=E4=B8=8A=E5=90=8C?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CatAsset/Runtime/CatAssetManager.Load.cs | 4 ++-- .../CatAsset/Runtime/CatAssetManager.Task.cs | 12 +++++----- Assets/CatAsset/Runtime/CatAssetManager.cs | 8 +++---- .../Runtime/Database/CatAssetDatabase.cs | 9 +++++--- .../CatAsset/Runtime/TaskSystem/TaskGroup.cs | 2 +- .../CatAsset/Runtime/TaskSystem/TaskRunner.cs | 23 ++++++++++++------- 6 files changed, 34 insertions(+), 24 deletions(-) diff --git a/Assets/CatAsset/Runtime/CatAssetManager.Load.cs b/Assets/CatAsset/Runtime/CatAssetManager.Load.cs index 2403c209..c7f7664b 100644 --- a/Assets/CatAsset/Runtime/CatAssetManager.Load.cs +++ b/Assets/CatAsset/Runtime/CatAssetManager.Load.cs @@ -15,8 +15,8 @@ public static partial class CatAssetManager /// public static void AddLoadSceneTask(string sceneName,SceneHandler handler,TaskPriority priority) { - LoadSceneTask task = LoadSceneTask.Create(taskRunner, sceneName, handler); - taskRunner.AddTask(task, priority); + LoadSceneTask task = LoadSceneTask.Create(loadTaskRunner, sceneName, handler); + loadTaskRunner.AddTask(task, priority); handler.Task = task; } diff --git a/Assets/CatAsset/Runtime/CatAssetManager.Task.cs b/Assets/CatAsset/Runtime/CatAssetManager.Task.cs index bb57c5f8..e55d0412 100644 --- a/Assets/CatAsset/Runtime/CatAssetManager.Task.cs +++ b/Assets/CatAsset/Runtime/CatAssetManager.Task.cs @@ -10,8 +10,8 @@ public static partial class CatAssetManager /// public static void AddWebRequestTask(string name, string uri, WebRequestedCallback callback,TaskPriority priority) { - WebRequestTask task = WebRequestTask.Create(taskRunner, name, uri, callback); - taskRunner.AddTask(task, priority); + WebRequestTask task = WebRequestTask.Create(loadTaskRunner, name, uri, callback); + loadTaskRunner.AddTask(task, priority); } /// @@ -20,8 +20,8 @@ public static void AddWebRequestTask(string name, string uri, WebRequestedCallba public static void AddLoadBundledAssetTask(string assetName,Type assetType,AssetHandler handler,TaskPriority priority) { LoadBundledAssetTask loadBundledAssetTask = - LoadBundledAssetTask.Create(taskRunner, assetName, assetType, handler); - taskRunner.AddTask(loadBundledAssetTask, priority); + LoadBundledAssetTask.Create(loadTaskRunner, assetName, assetType, handler); + loadTaskRunner.AddTask(loadBundledAssetTask, priority); handler.Task = loadBundledAssetTask; } @@ -32,8 +32,8 @@ public static void AddLoadBundledAssetTask(string assetName,Type assetType,Asset public static void AddLoadRawAssetTask(string assetName,AssetCategory category,AssetHandler handler,TaskPriority priority) { LoadRawAssetTask loadRawAssetTask = - LoadRawAssetTask.Create(taskRunner, assetName, category, handler); - taskRunner.AddTask(loadRawAssetTask, priority); + LoadRawAssetTask.Create(loadTaskRunner, assetName, category, handler); + loadTaskRunner.AddTask(loadRawAssetTask, priority); handler.Task = loadRawAssetTask; } diff --git a/Assets/CatAsset/Runtime/CatAssetManager.cs b/Assets/CatAsset/Runtime/CatAssetManager.cs index c8460a1d..52af0d3a 100644 --- a/Assets/CatAsset/Runtime/CatAssetManager.cs +++ b/Assets/CatAsset/Runtime/CatAssetManager.cs @@ -16,7 +16,7 @@ public static partial class CatAssetManager /// /// 加载相关任务运行器 /// - private static TaskRunner taskRunner = new TaskRunner(); + private static TaskRunner loadTaskRunner = new TaskRunner(); /// /// 卸载相关任务运行器 @@ -67,7 +67,7 @@ public static int MaxTaskRunCount { set { - taskRunner.MaxRunCount = value; + loadTaskRunner.MaxRunCount = value; downloadTaskRunner.MaxRunCount = value; } } @@ -112,14 +112,14 @@ static CatAssetManager() public static void Update() { //每帧开始轮询前 清空计数 - taskRunner.PreUpdate(); + loadTaskRunner.PreUpdate(); unloadTaskRunner.PreUpdate(); downloadTaskRunner.PreUpdate(); //按优先级轮询任务组 for (int i = 0; i < priorityNum; i++) { - taskRunner.Update(i); + loadTaskRunner.Update(i); unloadTaskRunner.Update(i); downloadTaskRunner.Update(i); } diff --git a/Assets/CatAsset/Runtime/Database/CatAssetDatabase.cs b/Assets/CatAsset/Runtime/Database/CatAssetDatabase.cs index 81cdc720..23f00cc3 100644 --- a/Assets/CatAsset/Runtime/Database/CatAssetDatabase.cs +++ b/Assets/CatAsset/Runtime/Database/CatAssetDatabase.cs @@ -433,10 +433,13 @@ private static void BuildProfilerTaskInfo(ProfilerInfo info) { foreach (var pair2 in pair.Value) { - var task = pair2.Value; + foreach (var pair3 in pair2.Value) + { + var task = pair3.Value; - ProfilerTaskInfo pti = ProfilerTaskInfo.Create(task.Name,task.GetType().Name,task.State,task.Progress,task.MergedTaskCount); - info.TaskInfoList.Add(pti); + ProfilerTaskInfo pti = ProfilerTaskInfo.Create(task.Name,task.GetType().Name,task.State,task.Progress,task.MergedTaskCount); + info.TaskInfoList.Add(pti); + } } } info.TaskInfoList.Sort(); diff --git a/Assets/CatAsset/Runtime/TaskSystem/TaskGroup.cs b/Assets/CatAsset/Runtime/TaskSystem/TaskGroup.cs index 25e9cc96..2b45d281 100644 --- a/Assets/CatAsset/Runtime/TaskSystem/TaskGroup.cs +++ b/Assets/CatAsset/Runtime/TaskSystem/TaskGroup.cs @@ -104,7 +104,7 @@ public bool Run() case TaskState.Finished: //任务运行结束 需要删除 RemoveTask(task); - TaskRunner.MainTaskDict[task.Owner].Remove(task.Name); + TaskRunner.MainTaskDict[task.Owner][task.GetType()].Remove(task.Name); ReferencePool.Release(task); break; }; diff --git a/Assets/CatAsset/Runtime/TaskSystem/TaskRunner.cs b/Assets/CatAsset/Runtime/TaskSystem/TaskRunner.cs index 4969b262..46f35c7e 100644 --- a/Assets/CatAsset/Runtime/TaskSystem/TaskRunner.cs +++ b/Assets/CatAsset/Runtime/TaskSystem/TaskRunner.cs @@ -17,8 +17,8 @@ public class TaskRunner /// /// 任务运行器->(任务名->主任务) /// - internal static readonly Dictionary> MainTaskDict = - new Dictionary>(); + internal static readonly Dictionary>> MainTaskDict = + new Dictionary>>(); /// /// 任务组列表 @@ -52,15 +52,22 @@ public TaskRunner() /// public void AddTask(BaseTask task, TaskPriority priority) { - if (!MainTaskDict.TryGetValue(task.Owner,out Dictionary dict)) + if (!MainTaskDict.TryGetValue(task.Owner,out var typeDict)) { - dict = new Dictionary(); - MainTaskDict.Add(task.Owner,dict); + typeDict = new Dictionary>(); + MainTaskDict.Add(task.Owner,typeDict); } - if (dict.TryGetValue(task.Name,out BaseTask mainTask)) + Type type = task.GetType(); + if (!typeDict.TryGetValue(type,out var NameDict)) { - //合并同名任务到主任务里 + NameDict = new Dictionary(); + typeDict.Add(type,NameDict); + } + + if (NameDict.TryGetValue(task.Name,out BaseTask mainTask)) + { + //合并同类型同名任务到主任务里 mainTask.MergeTask(task); if ((int)priority > (int)mainTask.Group.Priority) @@ -71,7 +78,7 @@ public void AddTask(BaseTask task, TaskPriority priority) } else { - dict.Add(task.Name,task); + NameDict.Add(task.Name,task); taskGroups[(int)priority].AddTask(task); } }