diff --git a/Unity/Assets/Model/Core/Async/ETTaskHelper.cs b/Unity/Assets/Model/Core/Async/ETTaskHelper.cs index 87f86c843da5d80f4fbeb198bc1801a531f06b73..77c56eecbe5669ece2f890048d10376665622318 100644 --- a/Unity/Assets/Model/Core/Async/ETTaskHelper.cs +++ b/Unity/Assets/Model/Core/Async/ETTaskHelper.cs @@ -43,6 +43,11 @@ namespace ET public static async ETTask WaitAny(ETTask[] tasks) { + if (tasks?.Length == 0) + { + return; + } + CoroutineBlocker coroutineBlocker = new CoroutineBlocker(2); foreach (ETTask task in tasks) { @@ -60,6 +65,11 @@ namespace ET public static async ETTask WaitAny(ETTask[] tasks) { + if (tasks?.Length == 0) + { + return; + } + CoroutineBlocker coroutineBlocker = new CoroutineBlocker(2); foreach (ETTask task in tasks) { diff --git a/Unity/Assets/Model/Core/Object/EventSystem.cs b/Unity/Assets/Model/Core/Object/EventSystem.cs index c5708c006e3aabf9e5b8b5f99365b4ca64423371..c3fc2ee52982c9e342e2d4ae334bfb8c05369128 100644 --- a/Unity/Assets/Model/Core/Object/EventSystem.cs +++ b/Unity/Assets/Model/Core/Object/EventSystem.cs @@ -613,26 +613,24 @@ namespace ET { return; } + using var list = ListComponent.Create(); + foreach (object obj in iEvents) { - try - { - using var list = ListComponent.Create(); - - if (!(obj is AEvent aEvent)) - { - Log.Error($"event error: {obj.GetType().Name}"); - continue; - } - - list.List.Add(aEvent.Handle(a)); - - await ETTaskHelper.WaitAll(list.List); - } - catch (Exception e) + if (!(obj is AEvent aEvent)) { - Log.Error(e); + Log.Error($"event error: {obj.GetType().Name}"); + continue; } + list.List.Add(aEvent.Handle(a)); + } + try + { + await ETTaskHelper.WaitAll(list.List); + } + catch (Exception e) + { + Log.Error(e); } } diff --git a/Unity/Assets/Model/Module/Resource/ResourcesComponent.cs b/Unity/Assets/Model/Module/Resource/ResourcesComponent.cs index 5c9e0532a17fcb049d43dcd3e93f287a2c334b56..d0fd43a9d40211104d2742c7c57a77f16afa8213 100644 --- a/Unity/Assets/Model/Module/Resource/ResourcesComponent.cs +++ b/Unity/Assets/Model/Module/Resource/ResourcesComponent.cs @@ -455,18 +455,23 @@ namespace ET string[] dependencies = GetSortedDependencies(assetBundleName); //Log.Debug($"-----------dep load async start {assetBundleName} dep: {dependencies.ToList().ListToString()}"); + using var tasts = ListComponent.Create(); + async ETTask loadDependency(string dependency) + { + using (await CoroutineLockComponent.Instance.Wait(CoroutineLockType.Resources, dependency.GetHashCode())) + { + await this.LoadOneBundleAsync(dependency, isScene); + } + } foreach (string dependency in dependencies) { if (string.IsNullOrEmpty(dependency)) { continue; } - - using (await CoroutineLockComponent.Instance.Wait(CoroutineLockType.Resources, dependency.GetHashCode())) - { - await this.LoadOneBundleAsync(dependency, isScene); - } + tasts.List.Add(loadDependency(dependency)); } + await ETTaskHelper.WaitAll(tasts.List); } private async ETTask LoadOneBundleAsync(string assetBundleName, bool isScene)