diff --git a/UnityProject/Assets/TEngine/Runtime/Module/ResourceModule/Extension/Implement/SetSpriteExtensions.cs b/UnityProject/Assets/TEngine/Runtime/Module/ResourceModule/Extension/Implement/SetSpriteExtensions.cs
index 366107b1..a8448cf4 100644
--- a/UnityProject/Assets/TEngine/Runtime/Module/ResourceModule/Extension/Implement/SetSpriteExtensions.cs
+++ b/UnityProject/Assets/TEngine/Runtime/Module/ResourceModule/Extension/Implement/SetSpriteExtensions.cs
@@ -1,4 +1,5 @@
-using TEngine;
+using System.Threading;
+using TEngine;
using UnityEngine;
using UnityEngine.UI;
@@ -10,9 +11,10 @@ public static class SetSpriteExtensions
/// UI/Image。
/// 资源定位地址。
/// 是否使用原始分辨率。
- public static void SetSprite(this Image image, string location, bool setNativeSize = false)
+ /// 取消设置资源的Token。
+ public static void SetSprite(this Image image, string location, bool setNativeSize = false, CancellationToken cancellationToken = default)
{
- ResourceExtComponent.Instance.SetAssetByResources(SetSpriteObject.Create(image, location, setNativeSize)).Forget();
+ ResourceExtComponent.Instance.SetAssetByResources(SetSpriteObject.Create(image, location, setNativeSize, cancellationToken)).Forget();
}
///
@@ -20,8 +22,9 @@ public static class SetSpriteExtensions
///
/// 2D/SpriteRender。
/// 资源定位地址。
- public static void SetSprite(this SpriteRenderer spriteRenderer, string location)
+ /// 取消设置资源的Token。
+ public static void SetSprite(this SpriteRenderer spriteRenderer, string location, CancellationToken cancellationToken = default)
{
- ResourceExtComponent.Instance.SetAssetByResources(SetSpriteObject.Create(spriteRenderer, location)).Forget();
+ ResourceExtComponent.Instance.SetAssetByResources(SetSpriteObject.Create(spriteRenderer, location, cancellationToken)).Forget();
}
}
\ No newline at end of file
diff --git a/UnityProject/Assets/TEngine/Runtime/Module/ResourceModule/Extension/Implement/SetSpriteObject.cs b/UnityProject/Assets/TEngine/Runtime/Module/ResourceModule/Extension/Implement/SetSpriteObject.cs
index bafa388f..cdfb66e2 100644
--- a/UnityProject/Assets/TEngine/Runtime/Module/ResourceModule/Extension/Implement/SetSpriteObject.cs
+++ b/UnityProject/Assets/TEngine/Runtime/Module/ResourceModule/Extension/Implement/SetSpriteObject.cs
@@ -1,4 +1,5 @@
using System;
+using System.Threading;
using UnityEngine;
using UnityEngine.UI;
using Object = UnityEngine.Object;
@@ -40,10 +41,15 @@ namespace TEngine
public string Location { get; private set; }
private bool _setNativeSize = false;
+
+ private CancellationToken _cancellationToken;
public void SetAsset(Object asset)
{
_sprite = (Sprite)asset;
+
+ if (_cancellationToken.IsCancellationRequested)
+ return;
if (_image != null)
{
@@ -84,21 +90,23 @@ namespace TEngine
_setNativeSize = false;
}
- public static SetSpriteObject Create(Image image, string location, bool setNativeSize = false)
+ public static SetSpriteObject Create(Image image, string location, bool setNativeSize = false, CancellationToken cancellationToken = default)
{
SetSpriteObject item = MemoryPool.Acquire();
item._image = image;
item._setNativeSize = setNativeSize;
item.Location = location;
+ item._cancellationToken = cancellationToken;
item._setType = SetType.Image;
return item;
}
- public static SetSpriteObject Create(SpriteRenderer spriteRenderer, string location)
+ public static SetSpriteObject Create(SpriteRenderer spriteRenderer, string location, CancellationToken cancellationToken = default)
{
SetSpriteObject item = MemoryPool.Acquire();
item._spriteRenderer = spriteRenderer;
item.Location = location;
+ item._cancellationToken = cancellationToken;
item._setType = SetType.SpriteRender;
return item;
}