From d169b62fc5558c50a6712d3c03ec21a10d089e65 Mon Sep 17 00:00:00 2001 From: feng Date: Wed, 12 Mar 2025 14:26:38 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=9B=BE=E7=89=87=E6=94=AF?= =?UTF-8?q?=E6=8C=81CancellationToken=E5=8F=96=E6=B6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extension/Implement/SetSpriteExtensions.cs | 13 ++++++++----- .../Extension/Implement/SetSpriteObject.cs | 12 ++++++++++-- 2 files changed, 18 insertions(+), 7 deletions(-) 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; }