using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UIElements; using MuHua; /// /// UI快捷菜单 /// public class UIShortcutMenu : ModuleUISingle { /// 菜单模板 public VisualTreeAsset MenuPanel; /// 项目模板 public VisualTreeAsset MenuTemplate; /// 控件列表 public static List controls = new List(); public Vector3 MousePosition => UITool.GetMousePosition(Element); 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(Vector3 position, List datas) { Close(); UIMenuPanel menuPanel = Create(); menuPanel.Settings(position, datas); } /// 关闭菜单 public void Close() { controls.ForEach(control => control.Dispose()); controls.Clear(); Element.Clear(); } /// 创建子菜单 public UIMenuPanel Create() { // 创建菜单元素 VisualElement element = MenuPanel.Instantiate(); element.EnableInClassList("menu", true); Element.Add(element); UIMenuPanel menuPanel = new UIMenuPanel(element, MenuTemplate); controls.Add(menuPanel); return menuPanel; } }