From 6aed8a5cf13145e6291e4e95ee6774d5e5b4b3b8 Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 12 Apr 2021 09:42:52 +0800 Subject: +effect --- Assets/UIEffects/BaseUIEffect.cs | 76 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 Assets/UIEffects/BaseUIEffect.cs (limited to 'Assets/UIEffects/BaseUIEffect.cs') diff --git a/Assets/UIEffects/BaseUIEffect.cs b/Assets/UIEffects/BaseUIEffect.cs new file mode 100644 index 0000000..4ee46c9 --- /dev/null +++ b/Assets/UIEffects/BaseUIEffect.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.EventSystems; +using UnityEditor; + +[ExecuteInEditMode] +[RequireComponent(typeof(Graphic))] +public abstract class BaseUIEffect : UIBehaviour, IMeshModifier, IMaterialModifier +{ + [NonSerialized] + private Graphic m_Graphic; + + protected Graphic graphic + { + get + { + if (m_Graphic == null) + m_Graphic = GetComponent(); + + return m_Graphic; + } + } + + protected override void OnEnable() + { + base.OnEnable(); + if (graphic != null) + graphic.SetVerticesDirty(); + } + + protected override void OnDisable() + { + if (graphic != null) + graphic.SetVerticesDirty(); + base.OnDisable(); + } + + protected override void OnDidApplyAnimationProperties() + { + if (graphic != null) + graphic.SetVerticesDirty(); + base.OnDidApplyAnimationProperties(); + } + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + if (graphic != null) + graphic.SetVerticesDirty(); + } + +#endif + + public void ModifyMesh(Mesh mesh) + { + using (var vh = new VertexHelper(mesh)) + { + ModifyMesh(vh); + vh.FillMesh(mesh); + } + } + + public virtual void ModifyMesh(VertexHelper vh) + { + } + + public virtual Material GetModifiedMaterial(Material baseMaterial) + { + return baseMaterial; + } + +} -- cgit v1.1-26-g67d0