[+] 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);
UniTask uniTask = handle.ToUniTask();
uniTask.AttachExternalCancellation(cancellationToken);
bool cancelOrFailed = await uniTask.SuppressCancellationThrow();
bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow();
if (cancelOrFailed)
{

View File

@@ -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)
{

View File

@@ -421,14 +421,20 @@ namespace TEngine
public async UniTask<T> LoadAssetAsync<T>(string assetName, CancellationToken cancellationToken) where T : Object
{
AssetOperationHandle handle = LoadAssetAsyncHandle<T>(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<GameObject> LoadGameObjectAsync(string assetName, CancellationToken cancellationToken)
{
AssetOperationHandle handle = LoadAssetAsyncHandle<GameObject>(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;