修复BUG
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user