using UnityEngine; namespace Neatly.UI { [DisallowMultipleComponent] [RequireComponent(typeof(SpriteRenderer))] [ExecuteAlways] public class NSprite:MonoBehaviour, ImageInterface { private SpriteRenderer m_Renderer; private SpriteRenderer Renderer { get { if (!m_Renderer) { m_Renderer = gameObject.GetComponent(); } return m_Renderer; } } [SerializeField] protected Sprite m_Sprite; [SerializeField] private string m_SpriteName = string.Empty; [SerializeField] private Material m_Material; public Sprite sprite { get { return m_Sprite; } } public string SpriteName { get { return m_SpriteName; } set { m_SpriteName = value; } } public Material material { get { return m_Material; } set { m_Material = value; } } void Awake() { if (NeatlyUI.AddAtlasRefAction != null) { NeatlyUI.AddAtlasRefAction(this); } } void OnDestroy() { if (!string.IsNullOrEmpty(m_SpriteName) && NeatlyUI.LoseAtlasRefAction != null) { NeatlyUI.LoseAtlasRefAction(this); } } public string GetSpriteName() { return SpriteName; } public void SetSprite(string spriteName, Sprite value, Material mat = null) { if (!SetPropertyUtility.SetClass(ref m_Sprite, value)) return; m_SpriteName = spriteName; SetPropertyUtility.SetClass(ref m_Material, mat); Renderer.material = m_Material; Renderer.sprite = m_Sprite; } public void SetSpriteName(string spriteName) { NeatlyUI.SetSpriteAction(this, spriteName); } } }