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: