SetSpriteExtension 回调

This commit is contained in:
tpxxn
2025-06-11 11:16:25 +08:00
parent 7d1de6e9a3
commit 9aef4d4081
2 changed files with 20 additions and 12 deletions

View File

@@ -12,10 +12,11 @@ public static class SetSpriteExtensions
/// <param name="image">UI/Image。</param> /// <param name="image">UI/Image。</param>
/// <param name="location">资源定位地址。</param> /// <param name="location">资源定位地址。</param>
/// <param name="setNativeSize">是否使用原始分辨率。</param> /// <param name="setNativeSize">是否使用原始分辨率。</param>
/// <param name="callback">设置完Sprite的回调</param>
/// <param name="cancellationToken">取消设置资源的Token。</param> /// <param name="cancellationToken">取消设置资源的Token。</param>
public static void SetSprite(this Image image, string location, bool setNativeSize = false, CancellationToken cancellationToken = default) public static void SetSprite(this Image image, string location, bool setNativeSize = false, Action<Image> callback = null, CancellationToken cancellationToken = default)
{ {
ResourceExtComponent.Instance.SetAssetByResources<Sprite>(SetSpriteObject.Create(image, location, setNativeSize, cancellationToken)).Forget(); ResourceExtComponent.Instance.SetAssetByResources<Sprite>(SetSpriteObject.Create(image, location, setNativeSize, callback, cancellationToken)).Forget();
} }
/// <summary> /// <summary>
@@ -23,12 +24,13 @@ public static class SetSpriteExtensions
/// </summary> /// </summary>
/// <param name="spriteRenderer">2D/SpriteRender。</param> /// <param name="spriteRenderer">2D/SpriteRender。</param>
/// <param name="location">资源定位地址。</param> /// <param name="location">资源定位地址。</param>
/// <param name="callback">设置完Sprite的回调</param>
/// <param name="cancellationToken">取消设置资源的Token。</param> /// <param name="cancellationToken">取消设置资源的Token。</param>
public static void SetSprite(this SpriteRenderer spriteRenderer, string location, CancellationToken cancellationToken = default) public static void SetSprite(this SpriteRenderer spriteRenderer, string location, Action<SpriteRenderer> callback = null, CancellationToken cancellationToken = default)
{ {
ResourceExtComponent.Instance.SetAssetByResources<Sprite>(SetSpriteObject.Create(spriteRenderer, location, cancellationToken)).Forget(); ResourceExtComponent.Instance.SetAssetByResources<Sprite>(SetSpriteObject.Create(spriteRenderer, location, callback, cancellationToken)).Forget();
} }
/// <summary> /// <summary>
/// 设置子图片。 /// 设置子图片。
/// </summary> /// </summary>

View File

@@ -22,12 +22,12 @@ namespace TEngine
[ShowInInspector] [ShowInInspector]
#endif #endif
private SetType _setType; private SetType _setType;
#if ODIN_INSPECTOR #if ODIN_INSPECTOR
[ShowInInspector] [ShowInInspector]
#endif #endif
private Image _image; private Image _image;
#if ODIN_INSPECTOR #if ODIN_INSPECTOR
[ShowInInspector] [ShowInInspector]
#endif #endif
@@ -41,13 +41,15 @@ namespace TEngine
public string Location { get; private set; } public string Location { get; private set; }
private bool _setNativeSize = false; private bool _setNativeSize = false;
Action<Image> _imageCallback;
Action<SpriteRenderer> _spriteCallback;
private CancellationToken _cancellationToken; private CancellationToken _cancellationToken;
public void SetAsset(Object asset) public void SetAsset(Object asset)
{ {
_sprite = (Sprite)asset; _sprite = (Sprite)asset;
if (_cancellationToken.IsCancellationRequested) if (_cancellationToken.IsCancellationRequested)
return; return;
@@ -58,10 +60,12 @@ namespace TEngine
{ {
_image.SetNativeSize(); _image.SetNativeSize();
} }
_imageCallback?.Invoke(_image);
} }
else if (_spriteRenderer != null) else if (_spriteRenderer != null)
{ {
_spriteRenderer.sprite = _sprite; _spriteRenderer.sprite = _sprite;
_spriteCallback?.Invoke(_spriteRenderer);
} }
} }
@@ -90,7 +94,7 @@ namespace TEngine
_setNativeSize = false; _setNativeSize = false;
} }
public static SetSpriteObject Create(Image image, string location, bool setNativeSize = false, CancellationToken cancellationToken = default) public static SetSpriteObject Create(Image image, string location, bool setNativeSize = false, Action<Image> callback = null, CancellationToken cancellationToken = default)
{ {
SetSpriteObject item = MemoryPool.Acquire<SetSpriteObject>(); SetSpriteObject item = MemoryPool.Acquire<SetSpriteObject>();
item._image = image; item._image = image;
@@ -98,16 +102,18 @@ namespace TEngine
item.Location = location; item.Location = location;
item._cancellationToken = cancellationToken; item._cancellationToken = cancellationToken;
item._setType = SetType.Image; item._setType = SetType.Image;
item._imageCallback = callback;
return item; return item;
} }
public static SetSpriteObject Create(SpriteRenderer spriteRenderer, string location, CancellationToken cancellationToken = default) public static SetSpriteObject Create(SpriteRenderer spriteRenderer, string location, Action<SpriteRenderer> callback = null, CancellationToken cancellationToken = default)
{ {
SetSpriteObject item = MemoryPool.Acquire<SetSpriteObject>(); SetSpriteObject item = MemoryPool.Acquire<SetSpriteObject>();
item._spriteRenderer = spriteRenderer; item._spriteRenderer = spriteRenderer;
item.Location = location; item.Location = location;
item._cancellationToken = cancellationToken; item._cancellationToken = cancellationToken;
item._setType = SetType.SpriteRender; item._setType = SetType.SpriteRender;
item._spriteCallback = callback;
return item; return item;
} }
} }