From 6a648c2dcdd243f3238343eabe6ecb51f3e48caa Mon Sep 17 00:00:00 2001 From: PopSlime Date: Fri, 17 Feb 2023 21:12:41 +0800 Subject: [PATCH] Fix error on `image.frame(s)` not set. --- Assets/Cryville/Crtr/Components/SpritePlane.cs | 16 +++++++++------- Assets/Cryville/Crtr/Components/SpriteScale3.cs | 4 +++- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Assets/Cryville/Crtr/Components/SpritePlane.cs b/Assets/Cryville/Crtr/Components/SpritePlane.cs index b89dfbf..35b336d 100644 --- a/Assets/Cryville/Crtr/Components/SpritePlane.cs +++ b/Assets/Cryville/Crtr/Components/SpritePlane.cs @@ -49,6 +49,9 @@ namespace Cryville.Crtr.Components { _mat.mainTexture = Frame == null ? null : Frame.Texture; } } + public static bool IsNullOrEmpty(SpriteInfo sprite) { + return sprite == null || sprite.Frame == null; + } } public class SpritePlane : SpriteBase { @@ -98,6 +101,7 @@ namespace Cryville.Crtr.Components { } protected SpriteInfo CurrentFrame { get { + if (m_frames.Length == 0) return null; if (m_index < 0) m_index = 0; else if (m_index >= m_frames.Length) m_index = m_frames.Length - 1; return m_frames[m_index]; @@ -105,22 +109,20 @@ namespace Cryville.Crtr.Components { } protected void OnFrameUpdate() { if (!mesh.Initialized) return; - if (CurrentFrame.Frame == null) { + var frame = CurrentFrame; + if (SpriteInfo.IsNullOrEmpty(frame)) { mesh.Renderer.enabled = false; return; } mesh.Renderer.enabled = true; - mesh.Renderer.material.mainTexture = CurrentFrame.Frame.Texture; + mesh.Renderer.material.mainTexture = frame.Frame.Texture; UpdateUV(); UpdateScale(); UpdateZIndex(); } protected virtual void UpdateUV() { var frame = CurrentFrame; - if (frame.Frame == null) { - Logger.Log("main", 4, "Skin", "Unable to load texture {0}", frame.FrameName); - return; - } + if (SpriteInfo.IsNullOrEmpty(frame)) return; Vector2[] muv = OriginalUV; Vector2[] uv = new Vector2[muv.Length]; for (int i = 0; i < uv.Length; i++) { @@ -157,7 +159,7 @@ namespace Cryville.Crtr.Components { } protected override void UpdateScale() { - if (CurrentFrame.Frame == null) return; + if (SpriteInfo.IsNullOrEmpty(CurrentFrame)) return; base.UpdateScale(); if (m_fit != FitMode.none && Scale.x != Scale.y) m_fit = FitMode.none; } diff --git a/Assets/Cryville/Crtr/Components/SpriteScale3.cs b/Assets/Cryville/Crtr/Components/SpriteScale3.cs index fc2abca..0398338 100644 --- a/Assets/Cryville/Crtr/Components/SpriteScale3.cs +++ b/Assets/Cryville/Crtr/Components/SpriteScale3.cs @@ -45,10 +45,12 @@ namespace Cryville.Crtr.Components { } protected override void UpdateUV() { + var frame = CurrentFrame; + if (SpriteInfo.IsNullOrEmpty(frame)) return; + Vector2[] muv = OriginalUV; Vector2[] uv = new Vector2[muv.Length]; - var frame = CurrentFrame; var or = frame.Ratio; var sr = Scale.x / Scale.y; var b = new Vector2(