From 4e498c5809cd0549651d6c1f0a540c8c6638290e Mon Sep 17 00:00:00 2001 From: MuHua-123 <136542559+MuHua-123@users.noreply.github.com> Date: Fri, 6 Dec 2024 12:12:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A1=86=E6=9E=B6=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ModuleUIPanel.meta} | 2 +- .../ModuleCore/ModuleUIPanel/ModuleUIPanel.cs | 51 +++++++++++++++++++ .../ModuleUIPanel/ModuleUIPanel.cs.meta} | 0 Assets/ModuleCore/ModuleUIWindow.meta | 8 +++ .../ModuleUIWindow/ModuleUIWindow.cs} | 13 +++-- .../ModuleUIWindow/ModuleUIWindow.cs.meta | 11 ++++ 6 files changed, 81 insertions(+), 4 deletions(-) rename Assets/{ModuleUnit/UnitUIPanel.meta => ModuleCore/ModuleUIPanel.meta} (77%) create mode 100644 Assets/ModuleCore/ModuleUIPanel/ModuleUIPanel.cs rename Assets/{ModuleUnit/UnitUIPanel/UnitUIPanel.cs.meta => ModuleCore/ModuleUIPanel/ModuleUIPanel.cs.meta} (100%) create mode 100644 Assets/ModuleCore/ModuleUIWindow.meta rename Assets/{ModuleUnit/UnitUIPanel/UnitUIPanel.cs => ModuleCore/ModuleUIWindow/ModuleUIWindow.cs} (51%) create mode 100644 Assets/ModuleCore/ModuleUIWindow/ModuleUIWindow.cs.meta 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: