using UnityEngine.UI; using UnityEngine; public class ImageEx : Image { CanvasAddition m_CanvasAddition; public CanvasAddition canvasAddition { get { return this.m_CanvasAddition ?? (this.m_CanvasAddition = this.GetComponentInParent()); } } Material materialRecorder; [SerializeField] bool m_Gray = false; public bool gray { get { return this.m_Gray; } set { if (this.gray == value) { return; } this.m_Gray = value; if (!inited) { return; } if (this.m_Gray) { this.material = this.canvasAddition == null ? MaterialUtility.GetDefaultSpriteGrayMaterial() : this.canvasAddition.spriteGrayMaterial; } else { this.material = materialRecorder; } } } [SerializeField] string m_IconKey = string.Empty; bool inited = false; protected override void Awake() { base.Awake(); materialRecorder = this.material; inited = true; if (this.m_Gray) { this.material = this.canvasAddition == null ? MaterialUtility.GetDefaultSpriteGrayMaterial() : this.canvasAddition.spriteGrayMaterial; } if (!string.IsNullOrEmpty(m_IconKey)) { this.SetSprite(m_IconKey); } } }