From cfca09c75ba465b29e83352eba946a2033fcba7f Mon Sep 17 00:00:00 2001 From: Lncvrt Date: Wed, 11 Feb 2026 14:16:59 -0700 Subject: [PATCH] Improve sprite b64 handling --- Assets/Scenes/IconMarketplaceMenu.unity | 2 +- Assets/Scripts/CustomIconLoader.cs | 6 ++++-- .../IconMarketplaceUploadIcon.cs | 2 +- Assets/Scripts/Tools.cs | 20 +++---------------- 4 files changed, 9 insertions(+), 21 deletions(-) diff --git a/Assets/Scenes/IconMarketplaceMenu.unity b/Assets/Scenes/IconMarketplaceMenu.unity index 641265a..6e9b1db 100644 --- a/Assets/Scenes/IconMarketplaceMenu.unity +++ b/Assets/Scenes/IconMarketplaceMenu.unity @@ -663,7 +663,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 0} + m_Sprite: {fileID: 21300000, guid: 517f61beffc1245a0a3f7907c7c93eb0, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 diff --git a/Assets/Scripts/CustomIconLoader.cs b/Assets/Scripts/CustomIconLoader.cs index 4b51231..abd174e 100644 --- a/Assets/Scripts/CustomIconLoader.cs +++ b/Assets/Scripts/CustomIconLoader.cs @@ -40,8 +40,10 @@ public class CustomIconLoader : MonoBehaviour var cachedIcon = BazookaManager.Instance.iconCache.FirstOrDefault(icon => icon.ID == obj.ID); if (cachedIcon != null) { - try { Tools.RenderFromBase64(cachedIcon.Data, obj.GetComponent()); } - catch { Tools.RenderFromBase64(cachedIcon.Data, obj.GetComponent()); } + if (obj.TryGetComponent(out var image)) + image.sprite = Tools.GetSpriteFromBase64(cachedIcon.Data); + else if (obj.TryGetComponent(out var spriteRenderer)) + image.sprite = Tools.GetSpriteFromBase64(cachedIcon.Data); } Destroy(obj); } diff --git a/Assets/Scripts/IconMarketplace/IconMarketplaceUploadIcon.cs b/Assets/Scripts/IconMarketplace/IconMarketplaceUploadIcon.cs index 9863a2d..7887b9a 100644 --- a/Assets/Scripts/IconMarketplace/IconMarketplaceUploadIcon.cs +++ b/Assets/Scripts/IconMarketplace/IconMarketplaceUploadIcon.cs @@ -62,7 +62,7 @@ public class IconMarketplaceUploadIcon : MonoBehaviour return; } birdData = Convert.ToBase64String(fileContent); - Tools.RenderFromBase64(birdData, birdImage); + birdImage.sprite = Tools.GetSpriteFromBase64(birdData); birdImageNone.SetActive(false); birdImage.gameObject.SetActive(true); } diff --git a/Assets/Scripts/Tools.cs b/Assets/Scripts/Tools.cs index 99954c4..0dce4e5 100644 --- a/Assets/Scripts/Tools.cs +++ b/Assets/Scripts/Tools.cs @@ -34,30 +34,16 @@ public static class Tools statusText.color = color; } - public static void RenderFromBase64(string base64, Image targetImage) + public static Sprite GetSpriteFromBase64(string base64) { byte[] imageData = Convert.FromBase64String(base64); Texture2D tex = new(2, 2, TextureFormat.ARGB32, false); - if (!tex.LoadImage(imageData)) return; + if (!tex.LoadImage(imageData)) return null; tex.filterMode = FilterMode.Point; tex.Apply(false, false); - Sprite sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new UnityEngine.Vector2(0.5f, 0.5f)); - targetImage.sprite = sprite; - } - - public static void RenderFromBase64(string base64, SpriteRenderer targetImage) - { - byte[] imageData = Convert.FromBase64String(base64); - Texture2D tex = new(2, 2, TextureFormat.ARGB32, false); - if (!tex.LoadImage(imageData)) return; - - tex.filterMode = FilterMode.Point; - tex.Apply(false, false); - - Sprite sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new UnityEngine.Vector2(0.5f, 0.5f)); - targetImage.sprite = sprite; + return Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new UnityEngine.Vector2(0.5f, 0.5f)); } public static void RefreshHierarchy(GameObject root)