From 4597149228af9a12680faa5f6b4971831d5b1201 Mon Sep 17 00:00:00 2001 From: MuHua-123 <136542559+MuHua-123@users.noreply.github.com> Date: Sat, 11 Oct 2025 17:27:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DBUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ModuleInput/InputControl/InputMenu.cs | 6 +- .../ModuleUISMenu.meta} | 2 +- .../ModuleUISMenu/Runtime.meta} | 2 +- .../ModuleUISMenu/Runtime/ShortcutMenu.cs | 50 ++++++ .../Runtime/ShortcutMenu.cs.meta} | 2 +- .../ModuleUISMenu/Runtime/ShortcutMenuItem.cs | 16 ++ .../Runtime/ShortcutMenuItem.cs.meta} | 2 +- .../ModuleUISMenu/Runtime/UIMenuPanel.cs | 75 ++++++++ .../Runtime/UIMenuPanel.cs.meta} | 2 +- .../ModuleUISMenu/Runtime/UIShortcutMenu.cs | 51 ++++++ .../Runtime}/UIShortcutMenu.cs.meta | 0 .../ModuleUISMenu/UI Toolkit.meta} | 2 +- .../ModuleUISMenu/UI Toolkit/MenuPanel.meta} | 2 +- .../UI Toolkit/MenuPanel/MenuPanel.uss} | 19 +- .../UI Toolkit/MenuPanel/MenuPanel.uss.meta} | 2 +- .../UI Toolkit/MenuPanel/MenuPanel.uxml | 11 ++ .../UI Toolkit/MenuPanel/MenuPanel.uxml.meta} | 0 .../UI Toolkit/MenuPanel/MenuTemplate.uxml} | 6 +- .../MenuPanel/MenuTemplate.uxml.meta} | 0 .../UI Toolkit}/ShortcutMenu.meta | 0 .../UI Toolkit/ShortcutMenu/ShortcutMenu.uss | 7 + .../ShortcutMenu/ShortcutMenu.uss.meta | 0 .../ShortcutMenu/ShortcutMenu.uxml | 0 .../ShortcutMenu/ShortcutMenu.uxml.meta | 0 Assets/ModuleSingle/SingleManager.cs | 7 +- .../ModuleUIPanel/Component/UISliderInputH.cs | 48 ----- .../ModuleUIPanel/Component/UIVector2.cs | 64 ------- .../ModuleUIPanel/Component/UIVector3.cs | 63 ------- .../ModuleUIPanel/Component/UIVector3.cs.meta | 11 -- .../Component/UIVideoPlayPanel.cs | 113 ------------ .../ModuleUIPanel/Popup/Message/UIMessage1.cs | 25 --- .../Popup/Message/UIMessage1.cs.meta | 11 -- .../ModuleUIPanel/Popup/Message/UIMessage2.cs | 31 ---- .../Popup/Message/UIMessage2.cs.meta | 11 -- .../ModuleUIPanel/Popup/Message/UIMessage3.cs | 31 ---- .../Popup/Message/UIMessage3.cs.meta | 11 -- .../ModuleUIPanel/Popup/UIBannerTip.cs | 18 -- .../ModuleUIPanel/Popup/UIBannerTip.cs.meta | 11 -- .../ModuleUIPanel/Popup/UIGuidance.cs | 132 -------------- .../ModuleUIPanel/Popup/UIGuidance.cs.meta | 11 -- .../ModuleUI/ModuleUIPanel/Popup/UILoading.cs | 31 ---- .../ModuleUIPanel/Popup/UILoading.cs.meta | 11 -- .../ModuleUIPanel/Popup/UIShortcutMenu.cs | 170 ------------------ .../ModuleUI/ModuleUISingle/UILoadManager.cs | 31 ---- .../ModuleUISingle/UILoadManager.cs.meta | 11 -- .../ModuleUI/ModuleUISingle/UIPopupManager.cs | 3 - .../SampleScene/SampleScene.unity | 59 ++++-- Assets/UI Toolkit/Document/MainDocument.uxml | 4 +- .../GamePopup/BannerTip/BannerTip.uss | 29 --- .../GamePopup/BannerTip/BannerTip.uxml | 8 - .../GamePopup/BannerTip/BannerTip.uxml.meta | 10 -- Assets/UI Toolkit/GamePopup/Guidance.meta | 8 - .../GamePopup/Guidance/Guidance.uss | 30 ---- .../GamePopup/Guidance/Guidance.uss.meta | 11 -- .../GamePopup/Guidance/Guidance.uxml | 20 --- .../GamePopup/Guidance/Guidance.uxml.meta | 10 -- Assets/UI Toolkit/GamePopup/Loading.meta | 8 - .../UI Toolkit/GamePopup/Loading/Loading.uss | 1 - .../GamePopup/Loading/Loading.uss.meta | 11 -- .../UI Toolkit/GamePopup/Loading/Loading.uxml | 13 -- .../GamePopup/Loading/Loading.uxml.meta | 10 -- Assets/UI Toolkit/GamePopup/Message.meta | 8 - .../UI Toolkit/GamePopup/Message/Message.uss | 79 -------- .../GamePopup/Message/Message.uss.meta | 11 -- .../GamePopup/Message/Message1.uxml | 8 - .../GamePopup/Message/Message1.uxml.meta | 10 -- .../GamePopup/Message/Message2.uxml | 9 - .../GamePopup/Message/Message2.uxml.meta | 10 -- .../GamePopup/Message/Message3.uxml | 12 -- .../GamePopup/Message/Message3.uxml.meta | 10 -- .../GamePopup/ShortcutMenu/MenuTemplate.uxml | 11 -- 71 files changed, 285 insertions(+), 1227 deletions(-) rename Assets/{ModuleUI/ModuleUIPanel/Component.meta => ModuleCore/ModuleUISMenu.meta} (77%) rename Assets/{ModuleUI/ModuleUIPanel/Popup.meta => ModuleCore/ModuleUISMenu/Runtime.meta} (77%) create mode 100644 Assets/ModuleCore/ModuleUISMenu/Runtime/ShortcutMenu.cs rename Assets/{ModuleUI/ModuleUIPanel/Component/UIVideoPlayPanel.cs.meta => ModuleCore/ModuleUISMenu/Runtime/ShortcutMenu.cs.meta} (83%) create mode 100644 Assets/ModuleCore/ModuleUISMenu/Runtime/ShortcutMenuItem.cs rename Assets/{ModuleUI/ModuleUIPanel/Component/UIVector2.cs.meta => ModuleCore/ModuleUISMenu/Runtime/ShortcutMenuItem.cs.meta} (83%) create mode 100644 Assets/ModuleCore/ModuleUISMenu/Runtime/UIMenuPanel.cs rename Assets/{ModuleUI/ModuleUIPanel/Component/UISliderInputH.cs.meta => ModuleCore/ModuleUISMenu/Runtime/UIMenuPanel.cs.meta} (83%) create mode 100644 Assets/ModuleCore/ModuleUISMenu/Runtime/UIShortcutMenu.cs rename Assets/{ModuleUI/ModuleUIPanel/Popup => ModuleCore/ModuleUISMenu/Runtime}/UIShortcutMenu.cs.meta (100%) rename Assets/{ModuleUI/ModuleUIPanel/Popup/Message.meta => ModuleCore/ModuleUISMenu/UI Toolkit.meta} (77%) rename Assets/{UI Toolkit/GamePopup/BannerTip.meta => ModuleCore/ModuleUISMenu/UI Toolkit/MenuPanel.meta} (77%) rename Assets/{UI Toolkit/GamePopup/ShortcutMenu/ShortcutMenu.uss => ModuleCore/ModuleUISMenu/UI Toolkit/MenuPanel/MenuPanel.uss} (68%) rename Assets/{UI Toolkit/GamePopup/BannerTip/BannerTip.uss.meta => ModuleCore/ModuleUISMenu/UI Toolkit/MenuPanel/MenuPanel.uss.meta} (87%) create mode 100644 Assets/ModuleCore/ModuleUISMenu/UI Toolkit/MenuPanel/MenuPanel.uxml rename Assets/{UI Toolkit/GamePopup/ShortcutMenu/MenuTemplate.uxml.meta => ModuleCore/ModuleUISMenu/UI Toolkit/MenuPanel/MenuPanel.uxml.meta} (100%) rename Assets/{UI Toolkit/GamePopup/ShortcutMenu/ItemTemplate.uxml => ModuleCore/ModuleUISMenu/UI Toolkit/MenuPanel/MenuTemplate.uxml} (65%) rename Assets/{UI Toolkit/GamePopup/ShortcutMenu/ItemTemplate.uxml.meta => ModuleCore/ModuleUISMenu/UI Toolkit/MenuPanel/MenuTemplate.uxml.meta} (100%) rename Assets/{UI Toolkit/GamePopup => ModuleCore/ModuleUISMenu/UI Toolkit}/ShortcutMenu.meta (100%) create mode 100644 Assets/ModuleCore/ModuleUISMenu/UI Toolkit/ShortcutMenu/ShortcutMenu.uss rename Assets/{UI Toolkit/GamePopup => ModuleCore/ModuleUISMenu/UI Toolkit}/ShortcutMenu/ShortcutMenu.uss.meta (100%) rename Assets/{UI Toolkit/GamePopup => ModuleCore/ModuleUISMenu/UI Toolkit}/ShortcutMenu/ShortcutMenu.uxml (100%) rename Assets/{UI Toolkit/GamePopup => ModuleCore/ModuleUISMenu/UI Toolkit}/ShortcutMenu/ShortcutMenu.uxml.meta (100%) delete mode 100644 Assets/ModuleUI/ModuleUIPanel/Component/UISliderInputH.cs delete mode 100644 Assets/ModuleUI/ModuleUIPanel/Component/UIVector2.cs delete mode 100644 Assets/ModuleUI/ModuleUIPanel/Component/UIVector3.cs delete mode 100644 Assets/ModuleUI/ModuleUIPanel/Component/UIVector3.cs.meta delete mode 100644 Assets/ModuleUI/ModuleUIPanel/Component/UIVideoPlayPanel.cs delete mode 100644 Assets/ModuleUI/ModuleUIPanel/Popup/Message/UIMessage1.cs delete mode 100644 Assets/ModuleUI/ModuleUIPanel/Popup/Message/UIMessage1.cs.meta delete mode 100644 Assets/ModuleUI/ModuleUIPanel/Popup/Message/UIMessage2.cs delete mode 100644 Assets/ModuleUI/ModuleUIPanel/Popup/Message/UIMessage2.cs.meta delete mode 100644 Assets/ModuleUI/ModuleUIPanel/Popup/Message/UIMessage3.cs delete mode 100644 Assets/ModuleUI/ModuleUIPanel/Popup/Message/UIMessage3.cs.meta delete mode 100644 Assets/ModuleUI/ModuleUIPanel/Popup/UIBannerTip.cs delete mode 100644 Assets/ModuleUI/ModuleUIPanel/Popup/UIBannerTip.cs.meta delete mode 100644 Assets/ModuleUI/ModuleUIPanel/Popup/UIGuidance.cs delete mode 100644 Assets/ModuleUI/ModuleUIPanel/Popup/UIGuidance.cs.meta delete mode 100644 Assets/ModuleUI/ModuleUIPanel/Popup/UILoading.cs delete mode 100644 Assets/ModuleUI/ModuleUIPanel/Popup/UILoading.cs.meta delete mode 100644 Assets/ModuleUI/ModuleUIPanel/Popup/UIShortcutMenu.cs delete mode 100644 Assets/ModuleUI/ModuleUISingle/UILoadManager.cs delete mode 100644 Assets/ModuleUI/ModuleUISingle/UILoadManager.cs.meta delete mode 100644 Assets/UI Toolkit/GamePopup/BannerTip/BannerTip.uss delete mode 100644 Assets/UI Toolkit/GamePopup/BannerTip/BannerTip.uxml delete mode 100644 Assets/UI Toolkit/GamePopup/BannerTip/BannerTip.uxml.meta delete mode 100644 Assets/UI Toolkit/GamePopup/Guidance.meta delete mode 100644 Assets/UI Toolkit/GamePopup/Guidance/Guidance.uss delete mode 100644 Assets/UI Toolkit/GamePopup/Guidance/Guidance.uss.meta delete mode 100644 Assets/UI Toolkit/GamePopup/Guidance/Guidance.uxml delete mode 100644 Assets/UI Toolkit/GamePopup/Guidance/Guidance.uxml.meta delete mode 100644 Assets/UI Toolkit/GamePopup/Loading.meta delete mode 100644 Assets/UI Toolkit/GamePopup/Loading/Loading.uss delete mode 100644 Assets/UI Toolkit/GamePopup/Loading/Loading.uss.meta delete mode 100644 Assets/UI Toolkit/GamePopup/Loading/Loading.uxml delete mode 100644 Assets/UI Toolkit/GamePopup/Loading/Loading.uxml.meta delete mode 100644 Assets/UI Toolkit/GamePopup/Message.meta delete mode 100644 Assets/UI Toolkit/GamePopup/Message/Message.uss delete mode 100644 Assets/UI Toolkit/GamePopup/Message/Message.uss.meta delete mode 100644 Assets/UI Toolkit/GamePopup/Message/Message1.uxml delete mode 100644 Assets/UI Toolkit/GamePopup/Message/Message1.uxml.meta delete mode 100644 Assets/UI Toolkit/GamePopup/Message/Message2.uxml delete mode 100644 Assets/UI Toolkit/GamePopup/Message/Message2.uxml.meta delete mode 100644 Assets/UI Toolkit/GamePopup/Message/Message3.uxml delete mode 100644 Assets/UI Toolkit/GamePopup/Message/Message3.uxml.meta delete mode 100644 Assets/UI Toolkit/GamePopup/ShortcutMenu/MenuTemplate.uxml diff --git a/Assets/ModuleCore/ModuleInput/InputControl/InputMenu.cs b/Assets/ModuleCore/ModuleInput/InputControl/InputMenu.cs index f75af3e..2f34e66 100644 --- a/Assets/ModuleCore/ModuleInput/InputControl/InputMenu.cs +++ b/Assets/ModuleCore/ModuleInput/InputControl/InputMenu.cs @@ -9,8 +9,6 @@ using MuHua; /// public class InputMenu : InputControl { - private UIMenuPanel menu; - protected override void ModuleInput_OnInputMode(InputMode mode) { // throw new System.NotImplementedException(); } @@ -19,11 +17,11 @@ public class InputMenu : InputControl { /// 鼠标左键 public void OnMouseLeft(InputValue inputValue) { if (inputValue.isPressed) return; - UIPopupManager.I.shortcutMenu.Close(); + ShortcutMenu.I.Close(); } /// 鼠标右键 public void OnMouseRight(InputValue inputValue) { - UIPopupManager.I.shortcutMenu.Open(); + ShortcutMenu.I.Open(); } #endregion } diff --git a/Assets/ModuleUI/ModuleUIPanel/Component.meta b/Assets/ModuleCore/ModuleUISMenu.meta similarity index 77% rename from Assets/ModuleUI/ModuleUIPanel/Component.meta rename to Assets/ModuleCore/ModuleUISMenu.meta index 98138f4..bb7e7f4 100644 --- a/Assets/ModuleUI/ModuleUIPanel/Component.meta +++ b/Assets/ModuleCore/ModuleUISMenu.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 06f31db1c09e8a0409a8b3b960a13216 +guid: d73f0702f68e73243ab4c6940caafa59 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/ModuleUI/ModuleUIPanel/Popup.meta b/Assets/ModuleCore/ModuleUISMenu/Runtime.meta similarity index 77% rename from Assets/ModuleUI/ModuleUIPanel/Popup.meta rename to Assets/ModuleCore/ModuleUISMenu/Runtime.meta index 9f89994..ae1e763 100644 --- a/Assets/ModuleUI/ModuleUIPanel/Popup.meta +++ b/Assets/ModuleCore/ModuleUISMenu/Runtime.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1a20e449063139b4ea0d19bd0677c7d1 +guid: 6477bb920cf3e3a4fbaf3e01082e3ae3 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/ModuleCore/ModuleUISMenu/Runtime/ShortcutMenu.cs b/Assets/ModuleCore/ModuleUISMenu/Runtime/ShortcutMenu.cs new file mode 100644 index 0000000..4b5f404 --- /dev/null +++ b/Assets/ModuleCore/ModuleUISMenu/Runtime/ShortcutMenu.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using MuHua; + +/// +/// 快捷菜单 +/// +public class ShortcutMenu : Module { + /// 数据列表 + public List menuItems = new List(); + + /// 打开菜单 + public void Open() => UIShortcutMenu.I?.Open(); + + /// 关闭菜单 + public void Close() => UIShortcutMenu.I?.Close(); + + /// 添加菜单项(1级菜单/2级菜单/3级菜单) + public void Add(string name, Action callback) { + string[] names = name.Split('/'); + ShortcutMenuItem item = Find(names[0], menuItems, true); + for (int i = 1; i < names.Length; i++) { + item = Find(names[i], item.menuItems, true); + } + item.callback = callback; + } + /// 移除菜单项(???/???/子级菜单) + public void Remove(string name) { + string[] names = name.Split('/'); + List menuItems = this.menuItems; + ShortcutMenuItem item = Find(names[0], menuItems, false); + for (int i = 1; i < names.Length; i++) { + if (item == null) return; + menuItems = item.menuItems; + item = Find(names[i], menuItems, false); + } + menuItems.Remove(item); + } + + /// 子项目查找 + private ShortcutMenuItem Find(string menu, List menuItems, bool isCreate) { + ShortcutMenuItem item = menuItems.Find(obj => obj.name == menu); + if (item != null || !isCreate) { return item; } + item = new ShortcutMenuItem { name = menu }; + menuItems.Add(item); + return item; + } +} diff --git a/Assets/ModuleUI/ModuleUIPanel/Component/UIVideoPlayPanel.cs.meta b/Assets/ModuleCore/ModuleUISMenu/Runtime/ShortcutMenu.cs.meta similarity index 83% rename from Assets/ModuleUI/ModuleUIPanel/Component/UIVideoPlayPanel.cs.meta rename to Assets/ModuleCore/ModuleUISMenu/Runtime/ShortcutMenu.cs.meta index 52eabd7..5da2bd6 100644 --- a/Assets/ModuleUI/ModuleUIPanel/Component/UIVideoPlayPanel.cs.meta +++ b/Assets/ModuleCore/ModuleUISMenu/Runtime/ShortcutMenu.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 00c04ca4ef821d0469a77408648f5ff2 +guid: 23732e20aab811a4eba63cc0f810d659 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/ModuleCore/ModuleUISMenu/Runtime/ShortcutMenuItem.cs b/Assets/ModuleCore/ModuleUISMenu/Runtime/ShortcutMenuItem.cs new file mode 100644 index 0000000..2da80cb --- /dev/null +++ b/Assets/ModuleCore/ModuleUISMenu/Runtime/ShortcutMenuItem.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 菜单项目 +/// +public class ShortcutMenuItem { + /// 名称 + public string name; + /// 回调 + public Action callback; + /// 子菜单项 + public List menuItems = new List(); +} diff --git a/Assets/ModuleUI/ModuleUIPanel/Component/UIVector2.cs.meta b/Assets/ModuleCore/ModuleUISMenu/Runtime/ShortcutMenuItem.cs.meta similarity index 83% rename from Assets/ModuleUI/ModuleUIPanel/Component/UIVector2.cs.meta rename to Assets/ModuleCore/ModuleUISMenu/Runtime/ShortcutMenuItem.cs.meta index a5f97ba..4884b7b 100644 --- a/Assets/ModuleUI/ModuleUIPanel/Component/UIVector2.cs.meta +++ b/Assets/ModuleCore/ModuleUISMenu/Runtime/ShortcutMenuItem.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c0898288ac15d9a4e9a82e0d6d36ff17 +guid: fac2916b09800194a8389027d4b54ce8 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/ModuleCore/ModuleUISMenu/Runtime/UIMenuPanel.cs b/Assets/ModuleCore/ModuleUISMenu/Runtime/UIMenuPanel.cs new file mode 100644 index 0000000..2463bec --- /dev/null +++ b/Assets/ModuleCore/ModuleUISMenu/Runtime/UIMenuPanel.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UIElements; +using MuHua; + +/// +/// UI快捷菜单面板 +/// +public class UIMenuPanel : ModuleUIPanel, UIControl { + + public UIMenuPanel menuPanel; + public VisualElement submenu; + public ModuleUIItems items; + + public VisualElement Container => Q("Container"); + + public UIMenuPanel(VisualElement element, VisualTreeAsset templateAsset) : base(element) { + items = new ModuleUIItems(Container, templateAsset, + (data, element) => new UIItem(data, element, this)); + } + public void Update() { + // throw new NotImplementedException(); + } + public void Dispose() { + items.Release(); + } + + public void Settings(Vector3 position, List datas) { + items.Create(datas); + element.transform.position = position; + } + + /// 打开子菜单 + public void Open(VisualElement submenu, List datas) { + if (this.submenu == submenu) { return; } + // 更新子菜单 + this.submenu = submenu; + if (menuPanel == null) { menuPanel = UIShortcutMenu.I.Create(); } + float x = submenu.worldBound.position.x + submenu.resolvedStyle.width; + float y = submenu.worldBound.position.y - 4; + Vector3 position = new Vector3(x, y, 0); + menuPanel.Settings(position, datas); + bool isEnable = datas != null && datas.Count > 0; + menuPanel.OpenSubmenu(isEnable); + } + public void OpenSubmenu(bool open) { + element.EnableInClassList("menu-hide", !open); + menuPanel?.OpenSubmenu(false); + } + + /// UI项目 + public class UIItem : ModuleUIItem { + public readonly UIMenuPanel parent; + + public Label Name => element.Q