Improve sprite b64 handling

This commit is contained in:
2026-02-11 14:16:59 -07:00
parent f08acbcff7
commit cfca09c75b
4 changed files with 9 additions and 21 deletions

View File

@@ -663,7 +663,7 @@ MonoBehaviour:
m_OnCullStateChanged: m_OnCullStateChanged:
m_PersistentCalls: m_PersistentCalls:
m_Calls: [] m_Calls: []
m_Sprite: {fileID: 0} m_Sprite: {fileID: 21300000, guid: 517f61beffc1245a0a3f7907c7c93eb0, type: 3}
m_Type: 0 m_Type: 0
m_PreserveAspect: 0 m_PreserveAspect: 0
m_FillCenter: 1 m_FillCenter: 1

View File

@@ -40,8 +40,10 @@ public class CustomIconLoader : MonoBehaviour
var cachedIcon = BazookaManager.Instance.iconCache.FirstOrDefault(icon => icon.ID == obj.ID); var cachedIcon = BazookaManager.Instance.iconCache.FirstOrDefault(icon => icon.ID == obj.ID);
if (cachedIcon != null) if (cachedIcon != null)
{ {
try { Tools.RenderFromBase64(cachedIcon.Data, obj.GetComponent<Image>()); } if (obj.TryGetComponent<Image>(out var image))
catch { Tools.RenderFromBase64(cachedIcon.Data, obj.GetComponent<SpriteRenderer>()); } image.sprite = Tools.GetSpriteFromBase64(cachedIcon.Data);
else if (obj.TryGetComponent<SpriteRenderer>(out var spriteRenderer))
image.sprite = Tools.GetSpriteFromBase64(cachedIcon.Data);
} }
Destroy(obj); Destroy(obj);
} }

View File

@@ -62,7 +62,7 @@ public class IconMarketplaceUploadIcon : MonoBehaviour
return; return;
} }
birdData = Convert.ToBase64String(fileContent); birdData = Convert.ToBase64String(fileContent);
Tools.RenderFromBase64(birdData, birdImage); birdImage.sprite = Tools.GetSpriteFromBase64(birdData);
birdImageNone.SetActive(false); birdImageNone.SetActive(false);
birdImage.gameObject.SetActive(true); birdImage.gameObject.SetActive(true);
} }

View File

@@ -34,30 +34,16 @@ public static class Tools
statusText.color = color; statusText.color = color;
} }
public static void RenderFromBase64(string base64, Image targetImage) public static Sprite GetSpriteFromBase64(string base64)
{ {
byte[] imageData = Convert.FromBase64String(base64); byte[] imageData = Convert.FromBase64String(base64);
Texture2D tex = new(2, 2, TextureFormat.ARGB32, false); Texture2D tex = new(2, 2, TextureFormat.ARGB32, false);
if (!tex.LoadImage(imageData)) return; if (!tex.LoadImage(imageData)) return null;
tex.filterMode = FilterMode.Point; tex.filterMode = FilterMode.Point;
tex.Apply(false, false); tex.Apply(false, false);
Sprite sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new UnityEngine.Vector2(0.5f, 0.5f)); return 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;
} }
public static void RefreshHierarchy(GameObject root) public static void RefreshHierarchy(GameObject root)