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(UIShortcutMenu.I.MousePosition, menuItems); /// 关闭菜单 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; } }