修复BUG

This commit is contained in:
MuHua-123
2025-10-11 17:31:48 +08:00
parent 539b592959
commit 7007bfaf19
5 changed files with 20 additions and 20 deletions
@@ -9,7 +9,7 @@ using MuHua;
/// </summary> /// </summary>
public class ShortcutMenu : Module<ShortcutMenu> { public class ShortcutMenu : Module<ShortcutMenu> {
/// <summary> 数据列表 </summary> /// <summary> 数据列表 </summary>
public List<MenuItem> menuItems = new List<MenuItem>(); public List<ShortcutMenuItem> menuItems = new List<ShortcutMenuItem>();
/// <summary> 打开菜单 </summary> /// <summary> 打开菜单 </summary>
public void Open() => UIShortcutMenu.I?.Open(); public void Open() => UIShortcutMenu.I?.Open();
@@ -20,7 +20,7 @@ public class ShortcutMenu : Module<ShortcutMenu> {
/// <summary> 添加菜单项(1级菜单/2级菜单/3级菜单) </summary> /// <summary> 添加菜单项(1级菜单/2级菜单/3级菜单) </summary>
public void Add(string name, Action callback) { public void Add(string name, Action callback) {
string[] names = name.Split('/'); string[] names = name.Split('/');
MenuItem item = Find(names[0], menuItems, true); ShortcutMenuItem item = Find(names[0], menuItems, true);
for (int i = 1; i < names.Length; i++) { for (int i = 1; i < names.Length; i++) {
item = Find(names[i], item.menuItems, true); item = Find(names[i], item.menuItems, true);
} }
@@ -29,8 +29,8 @@ public class ShortcutMenu : Module<ShortcutMenu> {
/// <summary> 移除菜单项(???/???/子级菜单) </summary> /// <summary> 移除菜单项(???/???/子级菜单) </summary>
public void Remove(string name) { public void Remove(string name) {
string[] names = name.Split('/'); string[] names = name.Split('/');
List<MenuItem> menuItems = this.menuItems; List<ShortcutMenuItem> menuItems = this.menuItems;
MenuItem item = Find(names[0], menuItems, false); ShortcutMenuItem item = Find(names[0], menuItems, false);
for (int i = 1; i < names.Length; i++) { for (int i = 1; i < names.Length; i++) {
if (item == null) return; if (item == null) return;
menuItems = item.menuItems; menuItems = item.menuItems;
@@ -40,10 +40,10 @@ public class ShortcutMenu : Module<ShortcutMenu> {
} }
/// <summary> 子项目查找 </summary> /// <summary> 子项目查找 </summary>
private MenuItem Find(string menu, List<MenuItem> menuItems, bool isCreate) { private ShortcutMenuItem Find(string menu, List<ShortcutMenuItem> menuItems, bool isCreate) {
MenuItem item = menuItems.Find(obj => obj.name == menu); ShortcutMenuItem item = menuItems.Find(obj => obj.name == menu);
if (item != null || !isCreate) { return item; } if (item != null || !isCreate) { return item; }
item = new MenuItem { name = menu }; item = new ShortcutMenuItem { name = menu };
menuItems.Add(item); menuItems.Add(item);
return item; return item;
} }
@@ -4,13 +4,13 @@ using System.Collections.Generic;
using UnityEngine; using UnityEngine;
/// <summary> /// <summary>
/// 菜单项目 /// 快捷菜单项目
/// </summary> /// </summary>
public class MenuItem { public class ShortcutMenuItem {
/// <summary> 名称 </summary> /// <summary> 名称 </summary>
public string name; public string name;
/// <summary> 回调 </summary> /// <summary> 回调 </summary>
public Action callback; public Action callback;
/// <summary> 子菜单项 </summary> /// <summary> 子菜单项 </summary>
public List<MenuItem> menuItems = new List<MenuItem>(); public List<ShortcutMenuItem> menuItems = new List<ShortcutMenuItem>();
} }
@@ -12,12 +12,12 @@ public class UIMenuPanel : ModuleUIPanel, UIControl {
public UIMenuPanel menuPanel; public UIMenuPanel menuPanel;
public VisualElement submenu; public VisualElement submenu;
public ModuleUIItems<UIItem, MenuItem> items; public ModuleUIItems<UIItem, ShortcutMenuItem> items;
public VisualElement Container => Q<VisualElement>("Container"); public VisualElement Container => Q<VisualElement>("Container");
public UIMenuPanel(VisualElement element, VisualTreeAsset templateAsset) : base(element) { public UIMenuPanel(VisualElement element, VisualTreeAsset templateAsset) : base(element) {
items = new ModuleUIItems<UIItem, MenuItem>(Container, templateAsset, items = new ModuleUIItems<UIItem, ShortcutMenuItem>(Container, templateAsset,
(data, element) => new UIItem(data, element, this)); (data, element) => new UIItem(data, element, this));
} }
public void Update() { public void Update() {
@@ -27,13 +27,13 @@ public class UIMenuPanel : ModuleUIPanel, UIControl {
items.Release(); items.Release();
} }
public void Settings(Vector3 position, List<MenuItem> datas) { public void Settings(Vector3 position, List<ShortcutMenuItem> datas) {
items.Create(datas); items.Create(datas);
element.transform.position = position; element.transform.position = position;
} }
/// <summary> 打开子菜单 </summary> /// <summary> 打开子菜单 </summary>
public void Open(VisualElement submenu, List<MenuItem> datas) { public void Open(VisualElement submenu, List<ShortcutMenuItem> datas) {
if (this.submenu == submenu) { return; } if (this.submenu == submenu) { return; }
// 更新子菜单 // 更新子菜单
this.submenu = submenu; this.submenu = submenu;
@@ -51,13 +51,13 @@ public class UIMenuPanel : ModuleUIPanel, UIControl {
} }
/// <summary> UI项目 </summary> /// <summary> UI项目 </summary>
public class UIItem : ModuleUIItem<MenuItem> { public class UIItem : ModuleUIItem<ShortcutMenuItem> {
public readonly UIMenuPanel parent; public readonly UIMenuPanel parent;
public Label Name => element.Q<Label>("Name"); public Label Name => element.Q<Label>("Name");
public VisualElement Arrow => element.Q<VisualElement>("Arrow"); public VisualElement Arrow => element.Q<VisualElement>("Arrow");
public UIItem(MenuItem value, VisualElement element, UIMenuPanel parent) : base(value, element) { public UIItem(ShortcutMenuItem value, VisualElement element, UIMenuPanel parent) : base(value, element) {
this.parent = parent; this.parent = parent;
Name.text = value.name; Name.text = value.name;
Arrow.EnableInClassList("menu-arrow-hide", value.menuItems == null || value.menuItems.Count == 0); Arrow.EnableInClassList("menu-arrow-hide", value.menuItems == null || value.menuItems.Count == 0);
@@ -10,9 +10,9 @@ using MuHua;
/// </summary> /// </summary>
public class UIShortcutMenu : ModuleUISingle<UIShortcutMenu> { public class UIShortcutMenu : ModuleUISingle<UIShortcutMenu> {
/// <summary> 菜单模板 </summary> /// <summary> 菜单模板 </summary>
public VisualTreeAsset menuTreeAsset; public VisualTreeAsset MenuPanel;
/// <summary> 项目模板 </summary> /// <summary> 项目模板 </summary>
public VisualTreeAsset itemTreeAsset; public VisualTreeAsset MenuTemplate;
/// <summary> 控件列表 </summary> /// <summary> 控件列表 </summary>
public static List<UIControl> controls = new List<UIControl>(); public static List<UIControl> controls = new List<UIControl>();
@@ -41,10 +41,10 @@ public class UIShortcutMenu : ModuleUISingle<UIShortcutMenu> {
/// <summary> 创建子菜单 </summary> /// <summary> 创建子菜单 </summary>
public UIMenuPanel Create() { public UIMenuPanel Create() {
// 创建菜单元素 // 创建菜单元素
VisualElement element = menuTreeAsset.Instantiate(); VisualElement element = MenuPanel.Instantiate();
element.EnableInClassList("menu", true); element.EnableInClassList("menu", true);
Element.Add(element); Element.Add(element);
UIMenuPanel menuPanel = new UIMenuPanel(element, itemTreeAsset); UIMenuPanel menuPanel = new UIMenuPanel(element, MenuTemplate);
controls.Add(menuPanel); controls.Add(menuPanel);
return menuPanel; return menuPanel;
} }