using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UIElements; using MuHua; /// /// UI快捷菜单面板 /// public class UIMenuPanel : ModuleUIPanel, UIControl { public UIMenuPanel menuPanel; public VisualElement submenu; public ModuleUIItems items; public VisualElement Container => Q("Container"); public UIMenuPanel(VisualElement element, VisualTreeAsset templateAsset) : base(element) { items = new ModuleUIItems(Container, templateAsset, (data, element) => new UIItem(data, element, this)); } public void Update() { // throw new NotImplementedException(); } public void Dispose() { items.Release(); } public void Settings(Vector3 position, List datas) { items.Create(datas); element.transform.position = position; } /// 打开子菜单 public void Open(VisualElement submenu, List datas) { if (this.submenu == submenu) { return; } // 更新子菜单 this.submenu = submenu; if (menuPanel == null) { menuPanel = UIShortcutMenu.I.Create(); } float x = submenu.worldBound.position.x + submenu.resolvedStyle.width; float y = submenu.worldBound.position.y - 4; Vector3 position = new Vector3(x, y, 0); menuPanel.Settings(position, datas); bool isEnable = datas != null && datas.Count > 0; menuPanel.OpenSubmenu(isEnable); } public void OpenSubmenu(bool open) { element.EnableInClassList("menu-hide", !open); menuPanel?.OpenSubmenu(false); } /// UI项目 public class UIItem : ModuleUIItem { public readonly UIMenuPanel parent; public Label Name => element.Q