using System; using Mono.Event; using Sirenix.OdinInspector; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI.Extensions; namespace UnityTest.ZXL { public class ObjectComponent : MonoBehaviour, IPointerClickHandler { /// /// 当前物体的名字(可能存在名字对不上的情况,需要进行深度查找) /// public string objectName; /// /// 描述 /// public string desc; public bool isCanClick; public void Clicked() { Debug.Log($"点击了{objectName}"); Enum.TryParse(objectName, out HighlightObjectType highlightObjectType); EventManager.Instance.FireNow(this, new ClickObjectEventArgs(this, highlightObjectType)); this.gameObject.HighlightOff(); } #if UNITY_EDITOR [Button] void Add(HighlightObjectType highlightObjectType) { var component = gameObject.GetOrAddComponent(); objectName = highlightObjectType.ToString(); } #endif public void OnPointerClick(PointerEventData eventData) { if (!isCanClick) return; isCanClick = false; Clicked(); } } }