From e75b3a4e66346bd4b1ad895d594d4bfc236f4052 Mon Sep 17 00:00:00 2001 From: ALEXTANG <574809918@qq.com> Date: Tue, 25 Jul 2023 16:28:09 +0800 Subject: [PATCH] =?UTF-8?q?[+]=20UniTask=20External=20YooAsset=E3=80=81Dot?= =?UTF-8?q?ween=E3=80=81TextMeshPro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GameFramework/Resource/AssetGroup.cs | 6 +---- .../GameFramework/Resource/LruAssetGroup.cs | 6 +---- .../GameFramework/Resource/ResourceManager.cs | 24 ++++++++++++++----- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/Assets/TEngine/Runtime/GameFramework/Resource/AssetGroup.cs b/Assets/TEngine/Runtime/GameFramework/Resource/AssetGroup.cs index 8f863ddc..131d41fa 100644 --- a/Assets/TEngine/Runtime/GameFramework/Resource/AssetGroup.cs +++ b/Assets/TEngine/Runtime/GameFramework/Resource/AssetGroup.cs @@ -383,11 +383,7 @@ namespace TEngine Reference(handle); - UniTask uniTask = handle.ToUniTask(); - - uniTask.AttachExternalCancellation(cancellationToken); - - bool cancelOrFailed = await uniTask.SuppressCancellationThrow(); + bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow(); if (cancelOrFailed) { diff --git a/Assets/TEngine/Runtime/GameFramework/Resource/LruAssetGroup.cs b/Assets/TEngine/Runtime/GameFramework/Resource/LruAssetGroup.cs index b4d223ca..b705707d 100644 --- a/Assets/TEngine/Runtime/GameFramework/Resource/LruAssetGroup.cs +++ b/Assets/TEngine/Runtime/GameFramework/Resource/LruAssetGroup.cs @@ -300,11 +300,7 @@ namespace TEngine Reference(handle); - UniTask uniTask = handle.ToUniTask(); - - uniTask.AttachExternalCancellation(cancellationToken); - - bool cancelOrFailed = await uniTask.SuppressCancellationThrow(); + bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow(); if (cancelOrFailed) { diff --git a/Assets/TEngine/Runtime/GameFramework/Resource/ResourceManager.cs b/Assets/TEngine/Runtime/GameFramework/Resource/ResourceManager.cs index 9eab4587..ee91a909 100644 --- a/Assets/TEngine/Runtime/GameFramework/Resource/ResourceManager.cs +++ b/Assets/TEngine/Runtime/GameFramework/Resource/ResourceManager.cs @@ -421,14 +421,20 @@ namespace TEngine public async UniTask LoadAssetAsync(string assetName, CancellationToken cancellationToken) where T : Object { AssetOperationHandle handle = LoadAssetAsyncHandle(assetName); - UniTask uniTask = handle.ToUniTask(); - uniTask.AttachExternalCancellation(cancellationToken); - await uniTask; + + bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow(); + + if (cancelOrFailed) + { + return null; + } if (typeof(T) == typeof(GameObject)) { GameObject ret = handle.InstantiateSync(); + AssetReference.BindAssetReference(ret, handle, assetName); + return ret as T; } else @@ -446,10 +452,16 @@ namespace TEngine public async UniTask LoadGameObjectAsync(string assetName, CancellationToken cancellationToken) { AssetOperationHandle handle = LoadAssetAsyncHandle(assetName); - UniTask uniTask = handle.ToUniTask(); - uniTask.AttachExternalCancellation(cancellationToken); - await uniTask; + + bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow(); + + if (cancelOrFailed) + { + return null; + } + GameObject ret = handle.InstantiateSync(); + AssetReference.BindAssetReference(ret, handle, assetName); return ret;