using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Reflection; using UnityEngine; using UnityEngine.UI; using TMPro; namespace MeowmentDebugTool { /// /// 自定义按钮模块 - 通过反射加载标记为DebugButton的方法,支持分组显示 /// public class CustomButtonsModule : IDebugModule { #region 字段 private const float SubTabCellWidth = 200f; private const float SubTabCellHeight = 70f; private const float SubTabSpacingX = 8f; private const float SubTabSpacingY = 8f; private const int SubTabPaddingHorizontal = 20; private const int SubTabPaddingVertical = 20; private const float ButtonMinWidth = 260f; private const float ButtonMaxWidth = 800f; private const float ButtonHeight = 90f; private const float ButtonSpacing = 10f; private const int ButtonsPerFrame = 12; private GameObject customButtonsPage; private RectTransform buttonContainer; private GameObject buttonPrefab; private ScrollRect buttonsScrollRect; // 自定义按钮回调 private Action customButtonCallback; // 保存的SDF字体资源 private TMP_FontAsset savedFontAsset = null; // 关闭窗口回调 private Action onCloseWindowCallback; // 分组相关 private Dictionary>> tabGroups = new Dictionary>>(); private Dictionary runtimeButtons = new Dictionary(); private int runtimeButtonBatchUpdateDepth = 0; private bool runtimeButtonsDirty = false; private bool buttonDefinitionsDirty = true; private bool buttonViewInitialized = false; private HashSet builtSubTabs = new HashSet(); private GameObject subTabBarObject; private GameObject tabContentRootObject; private Coroutine subTabBuildCoroutine; private string buildingSubTab = string.Empty; private int subTabBuildVersion = 0; // 子Tab相关 private Dictionary tabPanels = new Dictionary(); private Dictionary tabColors = new Dictionary(); private List