diff --git a/Assets/ModuleCore/ModuleUI/ModuleUI.cs b/Assets/ModuleCore/ModuleUI/ModuleUI.cs
index cb66ee1..98a3e6d 100644
--- a/Assets/ModuleCore/ModuleUI/ModuleUI.cs
+++ b/Assets/ModuleCore/ModuleUI/ModuleUI.cs
@@ -8,24 +8,50 @@ using MuHua;
///
/// UI模块
///
-public class ModuleUI : ModuleSingle {
- public static EnumPage page;
- public static event Action OnJumpPage;
+public class ModuleUI : ModuleUISingle {
+ /// 当前页面
+ public static Page Current;
+ /// 回退页面
+ public static Page BackPage;
+ /// 控件列表
+ public static List controls = new List();
+ /// 页面跳转事件
+ public static event Action OnJumpPage;
- public UIDocument document;// 绑定文档
+ /// 跳转页面
+ public static void Settings(Page pageType) {
+ BackPage = Current;
+ Current = pageType;
+ OnJumpPage?.Invoke(Current);
+ }
+ /// 回退页面
+ public static void Back() {
+ Current = BackPage;
+ OnJumpPage?.Invoke(Current);
+ }
+ /// 添加控件
+ public static void AddControl(UIControl control) {
+ controls.Add(control);
+ }
+ /// 移除控件
+ public static void RemoveControl(UIControl control) {
+ controls.Remove(control);
+ }
- /// 根目录文档
- public VisualElement root => document.rootVisualElement;
+ public override VisualElement Element => document.rootVisualElement;
protected override void Awake() => NoReplace();
- /// 跳转页面
- public static void Settings(EnumPage pageType) => OnJumpPage?.Invoke(pageType);
+ private void Update() => controls.ForEach(control => control.Update());
+
+ private void OnDestroy() => controls.ForEach(control => control.Dispose());
}
///
/// 页面
///
-public enum EnumPage {
+public enum Page {
+ /// 无
None,
+ /// 登录
Login,
}
\ No newline at end of file
diff --git a/Assets/ModuleCore/ModuleUI/ModuleUIPage/UILoginPage.cs b/Assets/ModuleCore/ModuleUI/ModuleUIPage/UILoginPage.cs
index d5bad24..2f2d3e3 100644
--- a/Assets/ModuleCore/ModuleUI/ModuleUIPage/UILoginPage.cs
+++ b/Assets/ModuleCore/ModuleUI/ModuleUIPage/UILoginPage.cs
@@ -25,9 +25,9 @@ public class UILoginPage : ModuleUIPage {
ModuleUI.OnJumpPage += ModuleUI_OnJumpPage;
}
- private void ModuleUI_OnJumpPage(EnumPage page) {
- Element.EnableInClassList("document-page-hide", page != EnumPage.Login);
- if (page != EnumPage.Login) { return; }
+ private void ModuleUI_OnJumpPage(Page page) {
+ Element.EnableInClassList("document-page-hide", page != Page.Login);
+ if (page != Page.Login) { return; }
OpenLoginPanel();
}
public void OpenLoginPanel() {
@@ -58,7 +58,7 @@ public class UILoginPanel : ModuleUIPanel {
InputField2.RegisterCallback>(evt => { password = evt.newValue; });
Button1.clicked += () => parent.OpenRegisterPanel();
Button2.clicked += () => ManagerRequest.I.Login(username, password, (s) => {
- ModuleUI.Settings(EnumPage.None);
+ ModuleUI.Settings(Page.None);
Debug.Log(s);
});
}
diff --git a/Assets/ModuleCore/ModuleUI/UIPopupManager.cs b/Assets/ModuleCore/ModuleUI/UIPopupManager.cs
index b62b506..a1a218d 100644
--- a/Assets/ModuleCore/ModuleUI/UIPopupManager.cs
+++ b/Assets/ModuleCore/ModuleUI/UIPopupManager.cs
@@ -7,25 +7,11 @@ using MuHua;
///
/// UI弹出管理器
///
-public class UIPopupManager : ModuleUIPage {
-
- // public UIPopup dialog;
+public class UIPopupManager : ModuleUISingle {
public override VisualElement Element => root.Q("Popup");
public VisualElement PopupDialog => Q("PopupDialog");
- private void Awake() {
- // dialog = new UIPopup(PopupDialog);
- }
- private void OnDestroy() {
- // config.Release();
- // configMaterial.Release();
- // equipmentSelection.Release();
- // paramrInput.Release();
- }
- private void Update() {
- // config.Update();
- // configMaterial.Update();
- }
+ protected override void Awake() => NoReplace(false);
}
diff --git a/Assets/SceneManager/SampleScene/SampleScene.unity b/Assets/SceneManager/SampleScene/SampleScene.unity
index 8e3774d..77d7767 100644
--- a/Assets/SceneManager/SampleScene/SampleScene.unity
+++ b/Assets/SceneManager/SampleScene/SampleScene.unity
@@ -132,13 +132,14 @@ GameObject:
m_Component:
- component: {fileID: 670296964}
- component: {fileID: 670296963}
+ - component: {fileID: 670296965}
m_Layer: 5
m_Name: "----\u754C\u9762\u6587\u6863----"
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!114 &670296963
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -171,6 +172,19 @@ Transform:
- {fileID: 1621578791}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &670296965
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 670296962}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ea89ac05041b5d74582ee9d0add233ac, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ document: {fileID: 670296963}
--- !u!1 &705507993
GameObject:
m_ObjectHideFlags: 0
diff --git a/Packages/UITool/Runtime/ModuleCoreUI/ModuleUISingle.cs b/Packages/UITool/Runtime/ModuleCoreUI/ModuleUISingle.cs
new file mode 100644
index 0000000..a891171
--- /dev/null
+++ b/Packages/UITool/Runtime/ModuleCoreUI/ModuleUISingle.cs
@@ -0,0 +1,42 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UIElements;
+
+namespace MuHua {
+ ///
+ /// 页面单例
+ ///
+ public abstract class ModuleUISingle : MonoBehaviour where Single : ModuleUISingle {
+ /// 模块单例
+ public static Single I => instance;
+ /// 模块单例
+ protected static Single instance;
+ /// 初始化
+ protected abstract void Awake();
+
+ /// 绑定文档
+ public UIDocument document;
+ /// 根目录文档
+ public VisualElement root => document.rootVisualElement;
+ /// 绑定文档
+ public abstract VisualElement Element { get; }
+ /// 添加UI元素
+ public void Add(VisualElement child) => Element.Add(child);
+ /// 查询UI元素
+ public T Q(string name = null, string className = null) where T : VisualElement => Element.Q(name, className);
+
+ /// 替换,并且设置切换场景不销毁
+ protected virtual void Replace(bool isDontDestroy = true) {
+ if (instance != null) { Destroy(instance.gameObject); }
+ instance = (Single)this;
+ if (isDontDestroy) { DontDestroyOnLoad(gameObject); }
+ }
+ /// 不替换,并且设置切换场景不销毁
+ protected virtual void NoReplace(bool isDontDestroy = true) {
+ if (isDontDestroy) { DontDestroyOnLoad(gameObject); }
+ if (instance == null) { instance = (Single)this; }
+ else { Destroy(gameObject); }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Packages/UITool/Runtime/ModuleTools/UIDirection.cs.meta b/Packages/UITool/Runtime/ModuleCoreUI/ModuleUISingle.cs.meta
similarity index 83%
rename from Packages/UITool/Runtime/ModuleTools/UIDirection.cs.meta
rename to Packages/UITool/Runtime/ModuleCoreUI/ModuleUISingle.cs.meta
index 1481ea1..470db7e 100644
--- a/Packages/UITool/Runtime/ModuleTools/UIDirection.cs.meta
+++ b/Packages/UITool/Runtime/ModuleCoreUI/ModuleUISingle.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: c2b0340184fec6c45815d13d6a1f7321
+guid: 6a88fdbff78494947b294cfa1754abb4
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Packages/UITool/Runtime/ModuleTools/UIControl.cs b/Packages/UITool/Runtime/ModuleTools/UIControl.cs
index e9e304c..5fb271a 100644
--- a/Packages/UITool/Runtime/ModuleTools/UIControl.cs
+++ b/Packages/UITool/Runtime/ModuleTools/UIControl.cs
@@ -9,5 +9,7 @@ namespace MuHua {
public interface UIControl {
/// 更新UI状态
public void Update();
+ /// 解除UI绑定
+ public void Dispose();
}
}
diff --git a/Packages/UITool/Runtime/ModuleTools/UIDirection.cs b/Packages/UITool/Runtime/ModuleTools/UIDirection.cs
deleted file mode 100644
index dfb4217..0000000
--- a/Packages/UITool/Runtime/ModuleTools/UIDirection.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-namespace MuHua {
- ///
- /// 方向
- ///
- [Obsolete("使用类内置的 UIDirection")]
- public enum UIDirection {
- FromLeftToRight = 0,
- FromRightToLeft = 1,
- FromTopToBottom = 2,
- FromBottomToTop = 3,
-
- HorizontalAndVertical = 4,
- Horizontal = 5,
- Vertical = 6,
- }
-}
\ No newline at end of file
diff --git a/Packages/UITool/Runtime/ModuleUIPanel/UIDropdown.cs b/Packages/UITool/Runtime/ModuleUIPanel/UIDropdown.cs
index 78fb747..22c3c39 100644
--- a/Packages/UITool/Runtime/ModuleUIPanel/UIDropdown.cs
+++ b/Packages/UITool/Runtime/ModuleUIPanel/UIDropdown.cs
@@ -8,7 +8,7 @@ namespace MuHua {
///
/// 下拉框
///
- public class UIDropdown : ModuleUIPanel, IDisposable, UIControl {
+ public class UIDropdown : ModuleUIPanel, UIControl {
/// 绑定的画布
internal readonly VisualElement canvas;
/// 下拉框容器
diff --git a/Packages/UITool/Runtime/ModuleUIPanel/UIScrollView/UIScrollView.cs b/Packages/UITool/Runtime/ModuleUIPanel/UIScrollView/UIScrollView.cs
index 44a9199..120a3bb 100644
--- a/Packages/UITool/Runtime/ModuleUIPanel/UIScrollView/UIScrollView.cs
+++ b/Packages/UITool/Runtime/ModuleUIPanel/UIScrollView/UIScrollView.cs
@@ -9,7 +9,7 @@ namespace MuHua {
///
/// 滚动视图
///
- public class UIScrollView : ModuleUIPanel, IDisposable, UIControl {
+ public class UIScrollView : ModuleUIPanel, UIControl {
/// 绑定的画布
public readonly VisualElement canvas;
/// 水平滑块
diff --git a/Packages/UITool/Runtime/ModuleUIPanel/UIScrollView/UIScrollViewH.cs b/Packages/UITool/Runtime/ModuleUIPanel/UIScrollView/UIScrollViewH.cs
index 1ac12ab..268ce1f 100644
--- a/Packages/UITool/Runtime/ModuleUIPanel/UIScrollView/UIScrollViewH.cs
+++ b/Packages/UITool/Runtime/ModuleUIPanel/UIScrollView/UIScrollViewH.cs
@@ -9,7 +9,7 @@ namespace MuHua {
///
/// 滚动视图 - 水平
///
- public class UIScrollViewH : ModuleUIPanel, IDisposable, UIControl {
+ public class UIScrollViewH : ModuleUIPanel, UIControl {
/// 绑定的画布
public readonly VisualElement canvas;
/// 元素方向
diff --git a/Packages/UITool/Runtime/ModuleUIPanel/UIScrollView/UIScrollViewV.cs b/Packages/UITool/Runtime/ModuleUIPanel/UIScrollView/UIScrollViewV.cs
index df11b24..7538e7c 100644
--- a/Packages/UITool/Runtime/ModuleUIPanel/UIScrollView/UIScrollViewV.cs
+++ b/Packages/UITool/Runtime/ModuleUIPanel/UIScrollView/UIScrollViewV.cs
@@ -9,7 +9,7 @@ namespace MuHua {
///
/// 滚动视图 - 垂直
///
- public class UIScrollViewV : ModuleUIPanel, IDisposable, UIControl {
+ public class UIScrollViewV : ModuleUIPanel, UIControl {
/// 绑定的画布
public readonly VisualElement canvas;
/// 元素方向
diff --git a/Packages/UITool/Runtime/ModuleUIPanel/UIScroller/UIScrollerH.cs b/Packages/UITool/Runtime/ModuleUIPanel/UIScroller/UIScrollerH.cs
index 6f36b1c..b8fb66c 100644
--- a/Packages/UITool/Runtime/ModuleUIPanel/UIScroller/UIScrollerH.cs
+++ b/Packages/UITool/Runtime/ModuleUIPanel/UIScroller/UIScrollerH.cs
@@ -8,7 +8,7 @@ namespace MuHua {
///
/// 滚动条 - 水平
///
- public class UIScrollerH : ModuleUIPanel, IDisposable, UIControl {
+ public class UIScrollerH : ModuleUIPanel, UIControl {
/// 绑定的画布
public readonly VisualElement canvas;
/// 元素方向
diff --git a/Packages/UITool/Runtime/ModuleUIPanel/UIScroller/UIScrollerV.cs b/Packages/UITool/Runtime/ModuleUIPanel/UIScroller/UIScrollerV.cs
index 4fae330..4d22255 100644
--- a/Packages/UITool/Runtime/ModuleUIPanel/UIScroller/UIScrollerV.cs
+++ b/Packages/UITool/Runtime/ModuleUIPanel/UIScroller/UIScrollerV.cs
@@ -8,7 +8,7 @@ namespace MuHua {
///
/// 滚动条 - 垂直
///
- public class UIScrollerV : ModuleUIPanel, IDisposable, UIControl {
+ public class UIScrollerV : ModuleUIPanel, UIControl {
/// 绑定的画布
public readonly VisualElement canvas;
/// 元素方向
diff --git a/Packages/UITool/Runtime/ModuleUIPanel/UISlider/UISliderH.cs b/Packages/UITool/Runtime/ModuleUIPanel/UISlider/UISliderH.cs
index 8fd4022..c0c4357 100644
--- a/Packages/UITool/Runtime/ModuleUIPanel/UISlider/UISliderH.cs
+++ b/Packages/UITool/Runtime/ModuleUIPanel/UISlider/UISliderH.cs
@@ -8,7 +8,7 @@ namespace MuHua {
///
/// 滑块 - 水平
///
- public class UISliderH : ModuleUIPanel, IDisposable, UIControl {
+ public class UISliderH : ModuleUIPanel, UIControl {
/// 绑定的画布
public readonly VisualElement canvas;
/// 元素方向
diff --git a/Packages/UITool/Runtime/ModuleUIPanel/UISlider/UISliderV.cs b/Packages/UITool/Runtime/ModuleUIPanel/UISlider/UISliderV.cs
index a7a68e9..6bd1f65 100644
--- a/Packages/UITool/Runtime/ModuleUIPanel/UISlider/UISliderV.cs
+++ b/Packages/UITool/Runtime/ModuleUIPanel/UISlider/UISliderV.cs
@@ -8,7 +8,7 @@ namespace MuHua {
///
/// 滑块 - 垂直
///
- public class UISliderV : ModuleUIPanel, IDisposable, UIControl {
+ public class UISliderV : ModuleUIPanel, UIControl {
/// 绑定的画布
public readonly VisualElement canvas;
/// 元素方向
diff --git a/Packages/UITool/Runtime/ModuleUIPanel/UIWindow.cs b/Packages/UITool/Runtime/ModuleUIPanel/UIWindow.cs
index d9ff7da..b9ea3d4 100644
--- a/Packages/UITool/Runtime/ModuleUIPanel/UIWindow.cs
+++ b/Packages/UITool/Runtime/ModuleUIPanel/UIWindow.cs
@@ -8,7 +8,7 @@ namespace MuHua {
///
/// 悬浮窗口
///
- public abstract class UIWindow : ModuleUIPanel, IDisposable, UIControl {
+ public abstract class UIWindow : ModuleUIPanel, UIControl {
/// 绑定的画布
public readonly VisualElement canvas;
/// 隐藏的USS类名