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; }