diff --git a/Assets/ModuleUnit/UnitUIPanel.meta b/Assets/ModuleCore/ModuleUIPanel.meta similarity index 77% rename from Assets/ModuleUnit/UnitUIPanel.meta rename to Assets/ModuleCore/ModuleUIPanel.meta index f1c77f3..5fbbc06 100644 --- a/Assets/ModuleUnit/UnitUIPanel.meta +++ b/Assets/ModuleCore/ModuleUIPanel.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: bd3360ba80b4e6f45b980c09ca91b77f +guid: 13ff0e5edf2a0e74098836968a2ea47e folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/ModuleCore/ModuleUIPanel/ModuleUIPanel.cs b/Assets/ModuleCore/ModuleUIPanel/ModuleUIPanel.cs new file mode 100644 index 0000000..4422e5a --- /dev/null +++ b/Assets/ModuleCore/ModuleUIPanel/ModuleUIPanel.cs @@ -0,0 +1,51 @@ +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() { } + /// 核心模块 + protected virtual ModuleCore ModuleCore => ModuleCore.I; + + public abstract VisualElement Element { get; } +} +/// +/// UI项 +/// +public abstract class UIItem where T : 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 += UnitUIPanelItem_OnSelect; + } + /// 触发选择事件 + public virtual void Select() => OnSelect?.Invoke(value); + /// 侦听选择事件 + public virtual void UnitUIPanelItem_OnSelect(Data obj) { + if (value.Equals(obj)) { SelectState(); } + else { DefaultState(); } + } + /// 默认状态 + public virtual void DefaultState() { } + /// 选中状态 + public virtual void SelectState() { } + /// 释放 + public virtual void Release() => OnSelect -= UnitUIPanelItem_OnSelect; +} \ No newline at end of file diff --git a/Assets/ModuleUnit/UnitUIPanel/UnitUIPanel.cs.meta b/Assets/ModuleCore/ModuleUIPanel/ModuleUIPanel.cs.meta similarity index 100% rename from Assets/ModuleUnit/UnitUIPanel/UnitUIPanel.cs.meta rename to Assets/ModuleCore/ModuleUIPanel/ModuleUIPanel.cs.meta diff --git a/Assets/ModuleCore/ModuleUIWindow.meta b/Assets/ModuleCore/ModuleUIWindow.meta new file mode 100644 index 0000000..01f2ca1 --- /dev/null +++ b/Assets/ModuleCore/ModuleUIWindow.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: da0641a5e1f51fd4f8eb2aeeb34d02fa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleUnit/UnitUIPanel/UnitUIPanel.cs b/Assets/ModuleCore/ModuleUIWindow/ModuleUIWindow.cs similarity index 51% rename from Assets/ModuleUnit/UnitUIPanel/UnitUIPanel.cs rename to Assets/ModuleCore/ModuleUIWindow/ModuleUIWindow.cs index 929a360..4026132 100644 --- a/Assets/ModuleUnit/UnitUIPanel/UnitUIPanel.cs +++ b/Assets/ModuleCore/ModuleUIWindow/ModuleUIWindow.cs @@ -4,15 +4,22 @@ using UnityEngine; using UnityEngine.UIElements; /// -/// UI面板单元 +/// UI窗口 /// -public abstract class UnitUIPanel : MonoBehaviour { +/// 窗口需要的数据类型 +public abstract class ModuleUIWindow : MonoBehaviour { /// 绑定的页面 public ModuleUIPage ModuleUIPage; /// 必须初始化 - protected abstract void Awake(); + public abstract void Awake(); /// 核心模块 protected virtual ModuleCore ModuleCore => ModuleCore.I; + /// 绑定的根元素 public abstract VisualElement Element { get; } + + /// 打开窗口,并且传进参数 + public abstract void Open(Data data); + /// 关闭窗口 + public abstract void Close(); } diff --git a/Assets/ModuleCore/ModuleUIWindow/ModuleUIWindow.cs.meta b/Assets/ModuleCore/ModuleUIWindow/ModuleUIWindow.cs.meta new file mode 100644 index 0000000..6a1e81f --- /dev/null +++ b/Assets/ModuleCore/ModuleUIWindow/ModuleUIWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2f97b2c9b7073ea4b8e1409d50d9e4c0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: