[+] UniTask External YooAsset、Dotween、TextMeshPro

This commit is contained in:
ALEXTANG
2023-07-25 16:28:09 +08:00
parent 91b0995911
commit e75b3a4e66
3 changed files with 20 additions and 16 deletions

View File

@@ -383,11 +383,7 @@ namespace TEngine
Reference(handle); Reference(handle);
UniTask uniTask = handle.ToUniTask(); bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow();
uniTask.AttachExternalCancellation(cancellationToken);
bool cancelOrFailed = await uniTask.SuppressCancellationThrow();
if (cancelOrFailed) if (cancelOrFailed)
{ {

View File

@@ -300,11 +300,7 @@ namespace TEngine
Reference(handle); Reference(handle);
UniTask uniTask = handle.ToUniTask(); bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow();
uniTask.AttachExternalCancellation(cancellationToken);
bool cancelOrFailed = await uniTask.SuppressCancellationThrow();
if (cancelOrFailed) if (cancelOrFailed)
{ {

View File

@@ -421,14 +421,20 @@ namespace TEngine
public async UniTask<T> LoadAssetAsync<T>(string assetName, CancellationToken cancellationToken) where T : Object public async UniTask<T> LoadAssetAsync<T>(string assetName, CancellationToken cancellationToken) where T : Object
{ {
AssetOperationHandle handle = LoadAssetAsyncHandle<T>(assetName); AssetOperationHandle handle = LoadAssetAsyncHandle<T>(assetName);
UniTask uniTask = handle.ToUniTask();
uniTask.AttachExternalCancellation(cancellationToken); bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow();
await uniTask;
if (cancelOrFailed)
{
return null;
}
if (typeof(T) == typeof(GameObject)) if (typeof(T) == typeof(GameObject))
{ {
GameObject ret = handle.InstantiateSync(); GameObject ret = handle.InstantiateSync();
AssetReference.BindAssetReference(ret, handle, assetName); AssetReference.BindAssetReference(ret, handle, assetName);
return ret as T; return ret as T;
} }
else else
@@ -446,10 +452,16 @@ namespace TEngine
public async UniTask<GameObject> LoadGameObjectAsync(string assetName, CancellationToken cancellationToken) public async UniTask<GameObject> LoadGameObjectAsync(string assetName, CancellationToken cancellationToken)
{ {
AssetOperationHandle handle = LoadAssetAsyncHandle<GameObject>(assetName); AssetOperationHandle handle = LoadAssetAsyncHandle<GameObject>(assetName);
UniTask uniTask = handle.ToUniTask();
uniTask.AttachExternalCancellation(cancellationToken); bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow();
await uniTask;
if (cancelOrFailed)
{
return null;
}
GameObject ret = handle.InstantiateSync(); GameObject ret = handle.InstantiateSync();
AssetReference.BindAssetReference(ret, handle, assetName); AssetReference.BindAssetReference(ret, handle, assetName);
return ret; return ret;