using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UIElements; /// /// UI面板 /// public abstract class ModuleUIPanel : MonoBehaviour { /// 绑定的页面 public ModuleUIPage ModuleUIPage; /// 可选初始化 protected virtual void Awake() { } public abstract VisualElement Element { get; } } /// /// UI项 /// public abstract class UIItem { /// 选择事件 public static event Action OnSelect; /// 触发事件 public static void Select(Data data) => OnSelect?.Invoke(data); /// 绑定的数据 public readonly Data value; /// 绑定的元素 public readonly VisualElement element; /// 基础实例 public UIItem(Data value, VisualElement element) { this.value = value; this.element = element; OnSelect += UIItem_OnSelect; } /// 触发选择事件 public virtual void Select() => OnSelect?.Invoke(value); /// 侦听选择事件 public virtual void UIItem_OnSelect(Data obj) { if (value.Equals(obj)) { SelectState(); } else { DefaultState(); } } /// 默认状态 public virtual void DefaultState() { } /// 选中状态 public virtual void SelectState() { } /// 释放 public virtual void Release() => OnSelect -= UIItem_OnSelect; }