using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UIElements; using MuHua; /// /// UI快捷菜单 /// public class UIShortcutMenu : ModuleUISingle { /// 菜单模板 public VisualTreeAsset menuTreeAsset; /// 项目模板 public VisualTreeAsset itemTreeAsset; /// 控件列表 public static List controls = new List(); public override VisualElement Element => root.Q("ShortcutMenu"); protected override void Awake() => NoReplace(false); private void Update() => controls.ForEach(control => control.Update()); private void OnDestroy() => controls.ForEach(control => control.Dispose()); /// 打开菜单 public void Open() { Close(); Vector3 position = UITool.GetMousePosition(Element); UIMenuPanel menuPanel = Create(); menuPanel.Settings(position, ShortcutMenu.I.menuItems); } /// 关闭菜单 public void Close() { controls.ForEach(control => control.Dispose()); controls.Clear(); Element.Clear(); } /// 创建子菜单 public UIMenuPanel Create() { // 创建菜单元素 VisualElement element = menuTreeAsset.Instantiate(); element.EnableInClassList("menu", true); Element.Add(element); UIMenuPanel menuPanel = new UIMenuPanel(element, itemTreeAsset); controls.Add(menuPanel); return menuPanel; } }