11
This commit is contained in:
parent
2b360dff76
commit
cf352f2a22
@ -35,6 +35,10 @@ public class CreateTabButtonPrefab : EditorWindow
|
||||
TextMeshProUGUI text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = "Tab";
|
||||
text.fontSize = 32;
|
||||
text.fontStyle = FontStyles.Bold;
|
||||
text.enableAutoSizing = true;
|
||||
text.fontSizeMin = 12;
|
||||
text.fontSizeMax = 72;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = Color.white;
|
||||
|
||||
@ -80,6 +84,10 @@ public class CreateTabButtonPrefab : EditorWindow
|
||||
TextMeshProUGUI text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = "Button";
|
||||
text.fontSize = 24;
|
||||
text.fontStyle = FontStyles.Bold;
|
||||
text.enableAutoSizing = true;
|
||||
text.fontSizeMin = 12;
|
||||
text.fontSizeMax = 72;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = Color.white;
|
||||
text.enableWordWrapping = true;
|
||||
|
||||
@ -214,6 +214,10 @@ namespace MeowmentDebugTool.Editor
|
||||
TextMeshProUGUI text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = "✕";
|
||||
text.fontSize = 48;
|
||||
text.fontStyle = FontStyles.Bold;
|
||||
text.enableAutoSizing = true;
|
||||
text.fontSizeMin = 12;
|
||||
text.fontSizeMax = 72;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = Color.white;
|
||||
|
||||
@ -260,6 +264,9 @@ namespace MeowmentDebugTool.Editor
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = Color.white;
|
||||
text.fontStyle = FontStyles.Bold;
|
||||
text.enableAutoSizing = true;
|
||||
text.fontSizeMin = 12;
|
||||
text.fontSizeMax = 72;
|
||||
|
||||
// 默认隐藏
|
||||
floatBtn.SetActive(false);
|
||||
@ -690,6 +697,10 @@ namespace MeowmentDebugTool.Editor
|
||||
TextMeshProUGUI text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = "Tab";
|
||||
text.fontSize = 32;
|
||||
text.fontStyle = FontStyles.Bold;
|
||||
text.enableAutoSizing = true;
|
||||
text.fontSizeMin = 12;
|
||||
text.fontSizeMax = 72;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = Color.white;
|
||||
|
||||
@ -722,6 +733,10 @@ namespace MeowmentDebugTool.Editor
|
||||
TextMeshProUGUI text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = "Button";
|
||||
text.fontSize = 24;
|
||||
text.fontStyle = FontStyles.Bold;
|
||||
text.enableAutoSizing = true;
|
||||
text.fontSizeMin = 12;
|
||||
text.fontSizeMax = 72;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = Color.white;
|
||||
text.enableWordWrapping = true;
|
||||
@ -813,6 +828,10 @@ namespace MeowmentDebugTool.Editor
|
||||
|
||||
TextMeshProUGUI text = obj.AddComponent<TextMeshProUGUI>();
|
||||
text.fontSize = 28;
|
||||
text.fontStyle = FontStyles.Bold;
|
||||
text.enableAutoSizing = true;
|
||||
text.fontSizeMin = 12;
|
||||
text.fontSizeMax = 72;
|
||||
text.color = Color.white;
|
||||
text.enableWordWrapping = true;
|
||||
|
||||
@ -844,6 +863,10 @@ namespace MeowmentDebugTool.Editor
|
||||
TextMeshProUGUI text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = label;
|
||||
text.fontSize = 32;
|
||||
text.fontStyle = FontStyles.Bold;
|
||||
text.enableAutoSizing = true;
|
||||
text.fontSizeMin = 12;
|
||||
text.fontSizeMax = 72;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = Color.white;
|
||||
|
||||
@ -900,6 +923,7 @@ namespace MeowmentDebugTool.Editor
|
||||
TextMeshProUGUI text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = "";
|
||||
text.fontSize = 28;
|
||||
text.fontStyle = FontStyles.Bold;
|
||||
text.color = Color.white;
|
||||
|
||||
inputField.textViewport = textAreaRt;
|
||||
|
||||
@ -31,6 +31,10 @@ namespace MeowmentDebugTool
|
||||
// 文字筛选
|
||||
private TMP_InputField textFilterInputField;
|
||||
private string textFilter = "";
|
||||
private TMP_Text infoFilterLabel;
|
||||
private TMP_Text warningFilterLabel;
|
||||
private TMP_Text errorFilterLabel;
|
||||
private TMP_Text fatalFilterLabel;
|
||||
|
||||
// 日志项预制件
|
||||
private GameObject logItemPrefab;
|
||||
@ -77,6 +81,10 @@ namespace MeowmentDebugTool
|
||||
private int lastRefreshFrame = -1;
|
||||
private bool hasRegisteredLogCallback = false;
|
||||
private bool uiInitialized = false;
|
||||
private int lastDisplayedInfoCount = -1;
|
||||
private int lastDisplayedWarningCount = -1;
|
||||
private int lastDisplayedErrorCount = -1;
|
||||
private int lastDisplayedFatalCount = -1;
|
||||
#endregion
|
||||
|
||||
#region 构造函数
|
||||
@ -185,6 +193,7 @@ namespace MeowmentDebugTool
|
||||
infoFilterToggle.onValueChanged.RemoveListener(OnInfoFilterChanged);
|
||||
infoFilterToggle.isOn = infoFilter;
|
||||
infoFilterToggle.onValueChanged.AddListener(OnInfoFilterChanged);
|
||||
infoFilterLabel = infoFilterToggle.GetComponentInChildren<TMP_Text>(true);
|
||||
}
|
||||
|
||||
if (warningFilterToggle != null)
|
||||
@ -192,6 +201,7 @@ namespace MeowmentDebugTool
|
||||
warningFilterToggle.onValueChanged.RemoveListener(OnWarningFilterChanged);
|
||||
warningFilterToggle.isOn = warningFilter;
|
||||
warningFilterToggle.onValueChanged.AddListener(OnWarningFilterChanged);
|
||||
warningFilterLabel = warningFilterToggle.GetComponentInChildren<TMP_Text>(true);
|
||||
}
|
||||
|
||||
if (errorFilterToggle != null)
|
||||
@ -199,6 +209,7 @@ namespace MeowmentDebugTool
|
||||
errorFilterToggle.onValueChanged.RemoveListener(OnErrorFilterChanged);
|
||||
errorFilterToggle.isOn = errorFilter;
|
||||
errorFilterToggle.onValueChanged.AddListener(OnErrorFilterChanged);
|
||||
errorFilterLabel = errorFilterToggle.GetComponentInChildren<TMP_Text>(true);
|
||||
}
|
||||
|
||||
if (fatalFilterToggle != null)
|
||||
@ -206,6 +217,7 @@ namespace MeowmentDebugTool
|
||||
fatalFilterToggle.onValueChanged.RemoveListener(OnFatalFilterChanged);
|
||||
fatalFilterToggle.isOn = fatalFilter;
|
||||
fatalFilterToggle.onValueChanged.AddListener(OnFatalFilterChanged);
|
||||
fatalFilterLabel = fatalFilterToggle.GetComponentInChildren<TMP_Text>(true);
|
||||
}
|
||||
|
||||
if (textFilterInputField != null)
|
||||
@ -288,9 +300,6 @@ namespace MeowmentDebugTool
|
||||
{
|
||||
logScrollRect.verticalNormalizedPosition = 0f;
|
||||
}
|
||||
|
||||
// 更新Toggle文本显示
|
||||
UpdateFilterToggleText();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -453,6 +462,8 @@ namespace MeowmentDebugTool
|
||||
index++;
|
||||
displayCount++;
|
||||
}
|
||||
|
||||
UpdateFilterToggleText();
|
||||
}
|
||||
|
||||
private bool ShouldShowLog(LogNode logNode)
|
||||
@ -636,34 +647,27 @@ namespace MeowmentDebugTool
|
||||
}
|
||||
|
||||
RefreshCount();
|
||||
|
||||
if (infoFilterToggle != null)
|
||||
|
||||
UpdateFilterLabel(infoFilterLabel, "Info", infoCount, ref lastDisplayedInfoCount);
|
||||
UpdateFilterLabel(warningFilterLabel, "Warning", warningCount, ref lastDisplayedWarningCount);
|
||||
UpdateFilterLabel(errorFilterLabel, "Error", errorCount, ref lastDisplayedErrorCount);
|
||||
UpdateFilterLabel(fatalFilterLabel, "Fatal", fatalCount, ref lastDisplayedFatalCount);
|
||||
}
|
||||
|
||||
private void UpdateFilterLabel(TMP_Text label, string prefix, int count, ref int lastDisplayedCount)
|
||||
{
|
||||
if (label == null)
|
||||
{
|
||||
var label = infoFilterToggle.GetComponentInChildren<TMP_Text>();
|
||||
if (label != null)
|
||||
label.text = $"Info ({infoCount})";
|
||||
return;
|
||||
}
|
||||
|
||||
if (warningFilterToggle != null)
|
||||
|
||||
if (lastDisplayedCount == count)
|
||||
{
|
||||
var label = warningFilterToggle.GetComponentInChildren<TMP_Text>();
|
||||
if (label != null)
|
||||
label.text = $"Warning ({warningCount})";
|
||||
}
|
||||
|
||||
if (errorFilterToggle != null)
|
||||
{
|
||||
var label = errorFilterToggle.GetComponentInChildren<TMP_Text>();
|
||||
if (label != null)
|
||||
label.text = $"Error ({errorCount})";
|
||||
}
|
||||
|
||||
if (fatalFilterToggle != null)
|
||||
{
|
||||
var label = fatalFilterToggle.GetComponentInChildren<TMP_Text>();
|
||||
if (label != null)
|
||||
label.text = $"Fatal ({fatalCount})";
|
||||
return;
|
||||
}
|
||||
|
||||
label.text = $"{prefix} ({count})";
|
||||
lastDisplayedCount = count;
|
||||
}
|
||||
|
||||
private void ClearAllLogs()
|
||||
@ -673,6 +677,10 @@ namespace MeowmentDebugTool
|
||||
errorLogNodes.Clear();
|
||||
fatalLogNodes.Clear();
|
||||
selectedNode = null;
|
||||
lastDisplayedInfoCount = -1;
|
||||
lastDisplayedWarningCount = -1;
|
||||
lastDisplayedErrorCount = -1;
|
||||
lastDisplayedFatalCount = -1;
|
||||
|
||||
if (detailText != null)
|
||||
detailText.text = "点击日志查看详细信息...";
|
||||
|
||||
@ -15,14 +15,14 @@ namespace MeowmentDebugTool
|
||||
public class CustomButtonsModule : IDebugModule
|
||||
{
|
||||
#region 字段
|
||||
private const float SubTabCellWidth = 170f;
|
||||
private const float SubTabCellHeight = 56f;
|
||||
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 = 10000f;
|
||||
private const float ButtonMaxWidth = 800f;
|
||||
private const float ButtonHeight = 90f;
|
||||
private const float ButtonSpacing = 10f;
|
||||
private const int ButtonsPerFrame = 12;
|
||||
@ -625,6 +625,10 @@ namespace MeowmentDebugTool
|
||||
TMP_Text text = emptyText.AddComponent<TextMeshProUGUI>();
|
||||
text.text = "未找到任何 DebugButton";
|
||||
text.fontSize = 28;
|
||||
text.fontStyle = FontStyles.Bold;
|
||||
text.enableAutoSizing = true;
|
||||
text.fontSizeMin = 12;
|
||||
text.fontSizeMax = 72;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = new Color(1f, 1f, 1f, 0.8f);
|
||||
|
||||
@ -948,6 +952,10 @@ namespace MeowmentDebugTool
|
||||
TMP_Text text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = tabName;
|
||||
text.fontSize = 26;
|
||||
text.fontStyle = FontStyles.Bold;
|
||||
text.enableAutoSizing = true;
|
||||
text.fontSizeMin = 12;
|
||||
text.fontSizeMax = 72;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = Color.white;
|
||||
|
||||
@ -1265,8 +1273,8 @@ namespace MeowmentDebugTool
|
||||
if (buttonText != null)
|
||||
{
|
||||
buttonText.text = buttonInfo.DisplayName;
|
||||
buttonText.enableWordWrapping = false;
|
||||
buttonText.overflowMode = TextOverflowModes.Overflow;
|
||||
buttonText.enableWordWrapping = true;
|
||||
buttonText.overflowMode = TextOverflowModes.Truncate;
|
||||
|
||||
// 应用保存的字体
|
||||
if (savedFontAsset != null)
|
||||
@ -1437,9 +1445,9 @@ namespace MeowmentDebugTool
|
||||
horizontalLayout.spacing = ButtonSpacing;
|
||||
horizontalLayout.padding = new RectOffset(0, 0, 0, 0);
|
||||
horizontalLayout.childAlignment = TextAnchor.UpperLeft;
|
||||
horizontalLayout.childControlWidth = false;
|
||||
horizontalLayout.childControlWidth = true;
|
||||
horizontalLayout.childControlHeight = true;
|
||||
horizontalLayout.childForceExpandWidth = false;
|
||||
horizontalLayout.childForceExpandWidth = true;
|
||||
horizontalLayout.childForceExpandHeight = false;
|
||||
|
||||
ContentSizeFitter sizeFitter = rowObj.AddComponent<ContentSizeFitter>();
|
||||
|
||||
@ -14,8 +14,8 @@ namespace MeowmentDebugTool
|
||||
public class CustomCheckBoxesModule : IDebugModule
|
||||
{
|
||||
#region 字段
|
||||
private const float SubTabCellWidth = 170f;
|
||||
private const float SubTabCellHeight = 56f;
|
||||
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;
|
||||
@ -270,6 +270,10 @@ namespace MeowmentDebugTool
|
||||
TMP_Text text = emptyText.AddComponent<TextMeshProUGUI>();
|
||||
text.text = "未找到任何 DebugCheckBox";
|
||||
text.fontSize = 28;
|
||||
text.fontStyle = FontStyles.Bold;
|
||||
text.enableAutoSizing = true;
|
||||
text.fontSizeMin = 12;
|
||||
text.fontSizeMax = 72;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = new Color(1f, 1f, 1f, 0.8f);
|
||||
|
||||
@ -445,6 +449,10 @@ namespace MeowmentDebugTool
|
||||
TMP_Text text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = tabName;
|
||||
text.fontSize = 26;
|
||||
text.fontStyle = FontStyles.Bold;
|
||||
text.enableAutoSizing = true;
|
||||
text.fontSizeMin = 12;
|
||||
text.fontSizeMax = 72;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = Color.white;
|
||||
|
||||
|
||||
@ -14,8 +14,8 @@ namespace MeowmentDebugTool
|
||||
public class CustomValuesModule : IDebugModule
|
||||
{
|
||||
#region 字段
|
||||
private const float SubTabCellWidth = 170f;
|
||||
private const float SubTabCellHeight = 56f;
|
||||
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;
|
||||
@ -423,6 +423,10 @@ namespace MeowmentDebugTool
|
||||
TMP_Text text = emptyText.AddComponent<TextMeshProUGUI>();
|
||||
text.text = "未找到任何 DebugValue";
|
||||
text.fontSize = 28;
|
||||
text.fontStyle = FontStyles.Bold;
|
||||
text.enableAutoSizing = true;
|
||||
text.fontSizeMin = 12;
|
||||
text.fontSizeMax = 72;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = new Color(1f, 1f, 1f, 0.8f);
|
||||
|
||||
@ -599,6 +603,10 @@ namespace MeowmentDebugTool
|
||||
TMP_Text text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = tabName;
|
||||
text.fontSize = 26;
|
||||
text.fontStyle = FontStyles.Bold;
|
||||
text.enableAutoSizing = true;
|
||||
text.fontSizeMin = 12;
|
||||
text.fontSizeMax = 72;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = Color.white;
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using UnityEngine.UI;
|
||||
using TMPro;
|
||||
|
||||
namespace MeowmentDebugTool
|
||||
{
|
||||
@ -38,6 +39,13 @@ namespace MeowmentDebugTool
|
||||
private bool hasDragged = false; // 标记本次操作是否进行了拖动
|
||||
private Vector2 dragStartPosition; // 拖动起始位置
|
||||
private const float dragThreshold = 5f; // 拖动阈值,移动超过这个距离才算拖动
|
||||
private const float FpsRefreshInterval = 0.25f;
|
||||
|
||||
private TMP_Text titleText;
|
||||
private TMP_Text fpsText;
|
||||
private TMP_Text fallbackText;
|
||||
private float smoothedUnscaledDeltaTime = 1f / 60f;
|
||||
private float nextFpsRefreshTime = 0f;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
@ -50,6 +58,12 @@ namespace MeowmentDebugTool
|
||||
}
|
||||
|
||||
targetPosition = rectTransform.anchoredPosition;
|
||||
titleText = transform.Find("ContentCanvas/TitleText")?.GetComponent<TMP_Text>()
|
||||
?? transform.Find("TitleText")?.GetComponent<TMP_Text>();
|
||||
fpsText = transform.Find("ContentCanvas/FpsText")?.GetComponent<TMP_Text>()
|
||||
?? transform.Find("FpsText")?.GetComponent<TMP_Text>();
|
||||
fallbackText = transform.Find("Text")?.GetComponent<TMP_Text>();
|
||||
UpdateFpsDisplay(true);
|
||||
}
|
||||
|
||||
private void Update()
|
||||
@ -69,6 +83,39 @@ namespace MeowmentDebugTool
|
||||
isSnapping = false;
|
||||
}
|
||||
}
|
||||
|
||||
smoothedUnscaledDeltaTime = Mathf.Lerp(smoothedUnscaledDeltaTime, Time.unscaledDeltaTime, 0.12f);
|
||||
if (Time.unscaledTime >= nextFpsRefreshTime)
|
||||
{
|
||||
nextFpsRefreshTime = Time.unscaledTime + FpsRefreshInterval;
|
||||
UpdateFpsDisplay(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateFpsDisplay(bool force)
|
||||
{
|
||||
if (!force && !gameObject.activeInHierarchy)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
int fps = Mathf.Clamp(Mathf.RoundToInt(1f / Mathf.Max(0.0001f, smoothedUnscaledDeltaTime)), 0, 999);
|
||||
|
||||
if (titleText != null)
|
||||
{
|
||||
titleText.text = "调试";
|
||||
}
|
||||
|
||||
if (fpsText != null)
|
||||
{
|
||||
fpsText.text = $"{fps} FPS";
|
||||
return;
|
||||
}
|
||||
|
||||
if (fallbackText != null)
|
||||
{
|
||||
fallbackText.text = $"调试\n{fps} FPS";
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -77,7 +124,6 @@ namespace MeowmentDebugTool
|
||||
public void OnPointerDown(PointerEventData eventData)
|
||||
{
|
||||
hasDragged = false; // 重置拖动标记
|
||||
Debug.Log("[DraggableFloatingButton] OnPointerDown - 重置拖动标记");
|
||||
}
|
||||
|
||||
public void OnBeginDrag(PointerEventData eventData)
|
||||
@ -165,17 +211,13 @@ namespace MeowmentDebugTool
|
||||
/// </summary>
|
||||
public void OnPointerClick(PointerEventData eventData)
|
||||
{
|
||||
Debug.Log($"[DraggableFloatingButton] OnPointerClick 被触发,hasDragged={hasDragged}");
|
||||
|
||||
// 如果进行了拖动,不执行点击操作
|
||||
if (hasDragged)
|
||||
{
|
||||
Debug.Log("[!] 检测到拖动,不打开窗口");
|
||||
return;
|
||||
}
|
||||
|
||||
// 纯点击操作,打开调试窗口
|
||||
Debug.Log("[OK] 点击浮窗,打开调试窗口");
|
||||
UniversalDebugTool debugTool = FindObjectOfType<UniversalDebugTool>();
|
||||
if (debugTool != null)
|
||||
{
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -49,7 +49,7 @@ namespace MeowmentDebugTool
|
||||
GameObject tabContainer = mainWindow.transform.Find("TabButtonContainer").gameObject;
|
||||
GameObject contentContainer = mainWindow.transform.Find("ContentContainer").gameObject;
|
||||
|
||||
GameObject parametersPage = null;
|
||||
GameObject parametersPage = CreateParametersPage(contentContainer.transform);
|
||||
GameObject customButtonsPage = CreateCustomButtonsPage(contentContainer.transform);
|
||||
GameObject customCheckBoxesPage = CreateCustomCheckBoxesPage(contentContainer.transform);
|
||||
GameObject customValuesPage = CreateCustomValuesPage(contentContainer.transform);
|
||||
@ -133,29 +133,78 @@ namespace MeowmentDebugTool
|
||||
rect.anchorMin = new Vector2(0, 1);
|
||||
rect.anchorMax = new Vector2(0, 1);
|
||||
rect.pivot = new Vector2(0, 1);
|
||||
rect.sizeDelta = new Vector2(90, 90);
|
||||
rect.sizeDelta = new Vector2(132, 96);
|
||||
// 距离左上角边缘10像素
|
||||
rect.anchoredPosition = new Vector2(10, -10);
|
||||
rect.anchoredPosition = new Vector2(16, -16);
|
||||
|
||||
Image img = floatBtn.AddComponent<Image>();
|
||||
img.color = new Color(0.2f, 0.6f, 1f, 0.8f);
|
||||
img.color = new Color(0.2f, 0.22f, 0.25f, 0.94f);
|
||||
img.raycastTarget = true; // 确保可以接收点击事件
|
||||
|
||||
Outline outline = floatBtn.AddComponent<Outline>();
|
||||
outline.effectColor = new Color(1f, 1f, 1f, 0.08f);
|
||||
outline.effectDistance = new Vector2(1f, -1f);
|
||||
|
||||
// 不再添加Button组件,点击事件由DraggableFloatingButton的OnPointerClick处理
|
||||
|
||||
// 添加文本
|
||||
GameObject textObj = new GameObject("Text");
|
||||
textObj.transform.SetParent(floatBtn.transform, false);
|
||||
RectTransform textRect = textObj.AddComponent<RectTransform>();
|
||||
textRect.anchorMin = Vector2.zero;
|
||||
textRect.anchorMax = Vector2.one;
|
||||
textRect.sizeDelta = Vector2.zero;
|
||||
|
||||
TextMeshProUGUI text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = "调试";
|
||||
text.fontSize = 28;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = Color.white;
|
||||
TMP_FontAsset defaultFont = GetDefaultFont();
|
||||
|
||||
GameObject contentCanvasObj = new GameObject("ContentCanvas");
|
||||
contentCanvasObj.transform.SetParent(floatBtn.transform, false);
|
||||
RectTransform contentCanvasRect = contentCanvasObj.AddComponent<RectTransform>();
|
||||
contentCanvasRect.anchorMin = Vector2.zero;
|
||||
contentCanvasRect.anchorMax = Vector2.one;
|
||||
contentCanvasRect.offsetMin = Vector2.zero;
|
||||
contentCanvasRect.offsetMax = Vector2.zero;
|
||||
|
||||
Canvas contentCanvas = contentCanvasObj.AddComponent<Canvas>();
|
||||
contentCanvas.overrideSorting = false;
|
||||
|
||||
GameObject titleObj = new GameObject("TitleText");
|
||||
titleObj.transform.SetParent(contentCanvasObj.transform, false);
|
||||
RectTransform titleRect = titleObj.AddComponent<RectTransform>();
|
||||
titleRect.anchorMin = new Vector2(0f, 0.52f);
|
||||
titleRect.anchorMax = new Vector2(1f, 1f);
|
||||
titleRect.offsetMin = new Vector2(10f, -4f);
|
||||
titleRect.offsetMax = new Vector2(-10f, -6f);
|
||||
|
||||
TextMeshProUGUI titleText = titleObj.AddComponent<TextMeshProUGUI>();
|
||||
titleText.text = "调试";
|
||||
titleText.fontSize = 22;
|
||||
titleText.fontStyle = FontStyles.Bold;
|
||||
titleText.enableAutoSizing = true;
|
||||
titleText.fontSizeMin = 12;
|
||||
titleText.fontSizeMax = 36;
|
||||
titleText.alignment = TextAlignmentOptions.Center;
|
||||
titleText.color = new Color(1f, 1f, 1f, 0.92f);
|
||||
titleText.raycastTarget = false;
|
||||
if (defaultFont != null)
|
||||
{
|
||||
titleText.font = defaultFont;
|
||||
}
|
||||
|
||||
GameObject fpsObj = new GameObject("FpsText");
|
||||
fpsObj.transform.SetParent(contentCanvasObj.transform, false);
|
||||
RectTransform fpsRect = fpsObj.AddComponent<RectTransform>();
|
||||
fpsRect.anchorMin = new Vector2(0f, 0f);
|
||||
fpsRect.anchorMax = new Vector2(1f, 0.58f);
|
||||
fpsRect.offsetMin = new Vector2(8f, 8f);
|
||||
fpsRect.offsetMax = new Vector2(-8f, -2f);
|
||||
|
||||
TextMeshProUGUI fpsText = fpsObj.AddComponent<TextMeshProUGUI>();
|
||||
fpsText.text = "-- FPS";
|
||||
fpsText.fontSize = 26;
|
||||
fpsText.fontStyle = FontStyles.Bold;
|
||||
fpsText.enableAutoSizing = true;
|
||||
fpsText.fontSizeMin = 12;
|
||||
fpsText.fontSizeMax = 40;
|
||||
fpsText.alignment = TextAlignmentOptions.Center;
|
||||
fpsText.color = new Color(0.92f, 0.94f, 0.96f, 0.96f);
|
||||
fpsText.raycastTarget = false;
|
||||
if (defaultFont != null)
|
||||
{
|
||||
fpsText.font = defaultFont;
|
||||
}
|
||||
|
||||
// 添加拖拽组件(包含点击处理)
|
||||
DraggableFloatingButton draggable = floatBtn.AddComponent<DraggableFloatingButton>();
|
||||
@ -167,53 +216,15 @@ namespace MeowmentDebugTool
|
||||
|
||||
private static GameObject CreateParametersPage(Transform parent)
|
||||
{
|
||||
// ParametersModule 现在内部自行构建所有子标签页UI
|
||||
// 这里只创建一个空的根容器
|
||||
GameObject page = new GameObject("ParametersPage");
|
||||
page.transform.SetParent(parent, false);
|
||||
RectTransform rect = page.AddComponent<RectTransform>();
|
||||
rect.anchorMin = Vector2.zero;
|
||||
rect.anchorMax = Vector2.one;
|
||||
rect.sizeDelta = Vector2.zero;
|
||||
|
||||
ScrollRect scroll = page.AddComponent<ScrollRect>();
|
||||
scroll.horizontal = false;
|
||||
scroll.vertical = true;
|
||||
|
||||
GameObject viewport = new GameObject("Viewport");
|
||||
viewport.transform.SetParent(page.transform, false);
|
||||
RectTransform vpRect = viewport.AddComponent<RectTransform>();
|
||||
vpRect.anchorMin = Vector2.zero;
|
||||
vpRect.anchorMax = Vector2.one;
|
||||
vpRect.sizeDelta = Vector2.zero;
|
||||
viewport.AddComponent<Image>().color = new Color(0, 0, 0, 0.1f);
|
||||
viewport.AddComponent<Mask>().showMaskGraphic = false;
|
||||
|
||||
GameObject content = new GameObject("Content");
|
||||
content.transform.SetParent(viewport.transform, false);
|
||||
RectTransform contentRect = content.AddComponent<RectTransform>();
|
||||
contentRect.anchorMin = new Vector2(0, 1);
|
||||
contentRect.anchorMax = new Vector2(1, 1);
|
||||
contentRect.pivot = new Vector2(0.5f, 1);
|
||||
contentRect.sizeDelta = new Vector2(0, 2000);
|
||||
|
||||
VerticalLayoutGroup layout = content.AddComponent<VerticalLayoutGroup>();
|
||||
layout.childControlWidth = true;
|
||||
layout.childControlHeight = true;
|
||||
layout.childForceExpandWidth = true;
|
||||
layout.childForceExpandHeight = false;
|
||||
layout.spacing = 20;
|
||||
layout.padding = new RectOffset(20, 20, 20, 20);
|
||||
|
||||
ContentSizeFitter fitter = content.AddComponent<ContentSizeFitter>();
|
||||
fitter.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
|
||||
|
||||
scroll.viewport = vpRect;
|
||||
scroll.content = contentRect;
|
||||
|
||||
// 设备信息文本
|
||||
GameObject deviceInfo = CreateTextObject("DeviceInfo", content.transform, "设备信息");
|
||||
// 系统信息文本
|
||||
GameObject systemInfo = CreateTextObject("SystemInfo", content.transform, "系统信息");
|
||||
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
@ -437,7 +448,7 @@ namespace MeowmentDebugTool
|
||||
rect.anchorMax = Vector2.one;
|
||||
rect.sizeDelta = Vector2.zero;
|
||||
|
||||
// Console Log缓存池设置面板
|
||||
// 日志缓存设置面板
|
||||
GameObject bufferPanel = new GameObject("BufferPanel");
|
||||
bufferPanel.transform.SetParent(page.transform, false);
|
||||
RectTransform bufferPanelRect = bufferPanel.AddComponent<RectTransform>();
|
||||
@ -454,7 +465,7 @@ namespace MeowmentDebugTool
|
||||
bufferVLayout.childForceExpandWidth = true;
|
||||
|
||||
// 标题
|
||||
GameObject bufferTitle = CreateTextObject("BufferTitle", bufferPanel.transform, "Console Log缓存池设置");
|
||||
GameObject bufferTitle = CreateTextObject("BufferTitle", bufferPanel.transform, "日志缓存设置");
|
||||
bufferTitle.GetComponent<TextMeshProUGUI>().fontSize = 36;
|
||||
bufferTitle.GetComponent<TextMeshProUGUI>().alignment = TextAlignmentOptions.Center;
|
||||
bufferTitle.GetComponent<RectTransform>().sizeDelta = new Vector2(0, 60);
|
||||
@ -552,8 +563,8 @@ namespace MeowmentDebugTool
|
||||
bufferBtnLayout.childForceExpandWidth = true;
|
||||
bufferBtnLayout.childForceExpandHeight = true;
|
||||
|
||||
GameObject applyBufferBtn = CreateButton("ApplyBufferButton", bufferBtnContainer.transform, "应用");
|
||||
GameObject resetBufferBtn = CreateButton("ResetBufferButton", bufferBtnContainer.transform, "重置");
|
||||
GameObject applyBufferBtn = CreateButton("ApplyBufferButton", bufferBtnContainer.transform, "应用缓存");
|
||||
GameObject resetBufferBtn = CreateButton("ResetBufferButton", bufferBtnContainer.transform, "恢复默认");
|
||||
|
||||
return page;
|
||||
}
|
||||
@ -781,7 +792,8 @@ namespace MeowmentDebugTool
|
||||
// 详情文本
|
||||
GameObject detailText = CreateTextObject("ConsoleDetailText", detailContent.transform, "点击日志查看详细信息...");
|
||||
TextMeshProUGUI detailTMP = detailText.GetComponent<TextMeshProUGUI>();
|
||||
detailTMP.fontSize = 24;
|
||||
detailTMP.fontSize = 28;
|
||||
detailTMP.enableAutoSizing = false;
|
||||
detailTMP.alignment = TextAlignmentOptions.TopLeft;
|
||||
detailTMP.enableWordWrapping = true;
|
||||
detailTMP.overflowMode = TextOverflowModes.Overflow;
|
||||
@ -971,8 +983,11 @@ namespace MeowmentDebugTool
|
||||
TextMeshProUGUI tmp = textObj.AddComponent<TextMeshProUGUI>();
|
||||
tmp.text = text;
|
||||
tmp.fontSize = 32;
|
||||
tmp.enableAutoSizing = false;
|
||||
tmp.enableWordWrapping = false;
|
||||
tmp.fontStyle = FontStyles.Bold;
|
||||
tmp.enableAutoSizing = true;
|
||||
tmp.fontSizeMin = 12;
|
||||
tmp.fontSizeMax = 72;
|
||||
tmp.enableWordWrapping = true;
|
||||
tmp.alignment = TextAlignmentOptions.Center;
|
||||
tmp.color = Color.white;
|
||||
|
||||
@ -996,6 +1011,10 @@ namespace MeowmentDebugTool
|
||||
TextMeshProUGUI tmp = textObj.AddComponent<TextMeshProUGUI>();
|
||||
tmp.text = text;
|
||||
tmp.fontSize = 28;
|
||||
tmp.fontStyle = FontStyles.Bold;
|
||||
tmp.enableAutoSizing = true;
|
||||
tmp.fontSizeMin = 12;
|
||||
tmp.fontSizeMax = 72;
|
||||
tmp.alignment = TextAlignmentOptions.TopLeft;
|
||||
tmp.color = Color.white;
|
||||
|
||||
@ -1008,6 +1027,57 @@ namespace MeowmentDebugTool
|
||||
|
||||
return textObj;
|
||||
}
|
||||
|
||||
private static GameObject CreateInfoCard(Transform parent, string cardName, string title, string bodyName, string initialText)
|
||||
{
|
||||
GameObject card = new GameObject(cardName);
|
||||
card.transform.SetParent(parent, false);
|
||||
|
||||
RectTransform cardRect = card.AddComponent<RectTransform>();
|
||||
cardRect.sizeDelta = new Vector2(0f, 0f);
|
||||
|
||||
Image cardBg = card.AddComponent<Image>();
|
||||
cardBg.color = new Color(0.12f, 0.14f, 0.17f, 0.9f);
|
||||
|
||||
VerticalLayoutGroup cardLayout = card.AddComponent<VerticalLayoutGroup>();
|
||||
cardLayout.spacing = 16;
|
||||
cardLayout.padding = new RectOffset(24, 24, 24, 24);
|
||||
cardLayout.childControlWidth = true;
|
||||
cardLayout.childControlHeight = true;
|
||||
cardLayout.childForceExpandWidth = true;
|
||||
cardLayout.childForceExpandHeight = false;
|
||||
|
||||
ContentSizeFitter cardFitter = card.AddComponent<ContentSizeFitter>();
|
||||
cardFitter.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
|
||||
|
||||
LayoutElement cardElement = card.AddComponent<LayoutElement>();
|
||||
cardElement.flexibleWidth = 1f;
|
||||
|
||||
GameObject titleObj = CreateTextObject("Title", card.transform, title);
|
||||
TextMeshProUGUI titleText = titleObj.GetComponent<TextMeshProUGUI>();
|
||||
titleText.fontSize = 34;
|
||||
titleText.fontStyle = FontStyles.Bold;
|
||||
titleText.color = new Color(0.95f, 0.97f, 0.99f, 0.96f);
|
||||
titleText.alignment = TextAlignmentOptions.Left;
|
||||
LayoutElement titleElement = titleObj.AddComponent<LayoutElement>();
|
||||
titleElement.preferredHeight = 48f;
|
||||
|
||||
GameObject bodyObj = CreateTextObject(bodyName, card.transform, initialText);
|
||||
TextMeshProUGUI bodyText = bodyObj.GetComponent<TextMeshProUGUI>();
|
||||
bodyText.fontSize = 28;
|
||||
bodyText.enableAutoSizing = false;
|
||||
bodyText.color = new Color(0.88f, 0.9f, 0.92f, 0.96f);
|
||||
bodyText.enableWordWrapping = true;
|
||||
bodyText.alignment = TextAlignmentOptions.TopLeft;
|
||||
|
||||
ContentSizeFitter bodyFitter = bodyObj.AddComponent<ContentSizeFitter>();
|
||||
bodyFitter.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
|
||||
|
||||
LayoutElement bodyElement = bodyObj.AddComponent<LayoutElement>();
|
||||
bodyElement.flexibleWidth = 1f;
|
||||
|
||||
return card;
|
||||
}
|
||||
|
||||
private static GameObject CreateToggle(string name, Transform parent, string labelText)
|
||||
{
|
||||
@ -1063,6 +1133,10 @@ namespace MeowmentDebugTool
|
||||
TextMeshProUGUI labelTmp = label.AddComponent<TextMeshProUGUI>();
|
||||
labelTmp.text = labelText;
|
||||
labelTmp.fontSize = 24;
|
||||
labelTmp.fontStyle = FontStyles.Bold;
|
||||
labelTmp.enableAutoSizing = true;
|
||||
labelTmp.fontSizeMin = 12;
|
||||
labelTmp.fontSizeMax = 72;
|
||||
labelTmp.alignment = TextAlignmentOptions.MidlineLeft;
|
||||
labelTmp.color = Color.white;
|
||||
|
||||
@ -1122,11 +1196,15 @@ namespace MeowmentDebugTool
|
||||
|
||||
TextMeshProUGUI labelTmp = label.AddComponent<TextMeshProUGUI>();
|
||||
labelTmp.fontSize = 28;
|
||||
labelTmp.fontStyle = FontStyles.Bold;
|
||||
labelTmp.enableAutoSizing = true;
|
||||
labelTmp.fontSizeMin = 12;
|
||||
labelTmp.fontSizeMax = 72;
|
||||
labelTmp.alignment = TextAlignmentOptions.MidlineLeft;
|
||||
labelTmp.color = Color.white;
|
||||
labelTmp.overflowMode = TextOverflowModes.Truncate;
|
||||
labelTmp.richText = true;
|
||||
labelTmp.enableWordWrapping = false;
|
||||
labelTmp.enableWordWrapping = true;
|
||||
|
||||
// 设置默认字体
|
||||
TMP_FontAsset defaultFont = GetDefaultFont();
|
||||
@ -1184,6 +1262,7 @@ namespace MeowmentDebugTool
|
||||
|
||||
TextMeshProUGUI text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.fontSize = 32;
|
||||
text.fontStyle = FontStyles.Bold;
|
||||
text.color = Color.white;
|
||||
|
||||
// 设置默认字体
|
||||
@ -1371,6 +1450,10 @@ namespace MeowmentDebugTool
|
||||
TextMeshProUGUI labelText = label.AddComponent<TextMeshProUGUI>();
|
||||
labelText.text = "复选框";
|
||||
labelText.fontSize = 32;
|
||||
labelText.fontStyle = FontStyles.Bold;
|
||||
labelText.enableAutoSizing = true;
|
||||
labelText.fontSizeMin = 12;
|
||||
labelText.fontSizeMax = 72;
|
||||
labelText.alignment = TextAlignmentOptions.Left;
|
||||
labelText.color = Color.white;
|
||||
|
||||
@ -1423,6 +1506,10 @@ namespace MeowmentDebugTool
|
||||
TextMeshProUGUI labelText = label.AddComponent<TextMeshProUGUI>();
|
||||
labelText.text = "数值名称";
|
||||
labelText.fontSize = 28;
|
||||
labelText.fontStyle = FontStyles.Bold;
|
||||
labelText.enableAutoSizing = true;
|
||||
labelText.fontSizeMin = 12;
|
||||
labelText.fontSizeMax = 72;
|
||||
labelText.alignment = TextAlignmentOptions.Left;
|
||||
labelText.color = Color.white;
|
||||
|
||||
@ -1514,6 +1601,7 @@ namespace MeowmentDebugTool
|
||||
|
||||
TextMeshProUGUI inputTextComponent = inputTextObj.AddComponent<TextMeshProUGUI>();
|
||||
inputTextComponent.fontSize = 28;
|
||||
inputTextComponent.fontStyle = FontStyles.Bold;
|
||||
inputTextComponent.alignment = TextAlignmentOptions.Center;
|
||||
inputTextComponent.color = Color.white;
|
||||
|
||||
@ -1546,6 +1634,10 @@ namespace MeowmentDebugTool
|
||||
TextMeshProUGUI confirmText = confirmBtnText.AddComponent<TextMeshProUGUI>();
|
||||
confirmText.text = "确认";
|
||||
confirmText.fontSize = 28;
|
||||
confirmText.fontStyle = FontStyles.Bold;
|
||||
confirmText.enableAutoSizing = true;
|
||||
confirmText.fontSizeMin = 12;
|
||||
confirmText.fontSizeMax = 72;
|
||||
confirmText.alignment = TextAlignmentOptions.Center;
|
||||
confirmText.color = Color.white;
|
||||
|
||||
@ -1591,14 +1683,8 @@ namespace MeowmentDebugTool
|
||||
type.GetField("floatingButton", flags)?.SetValue(tool, floatingButton);
|
||||
type.GetField("draggableComponent", flags)?.SetValue(tool, floatingButton.GetComponent<DraggableFloatingButton>());
|
||||
|
||||
// 参数查看页面(已移除UI,仅保留字段兼容)
|
||||
// 参数查看页面 - ParametersModule 内部自行构建子标签页UI
|
||||
type.GetField("parametersPage", flags)?.SetValue(tool, parametersPage);
|
||||
if (parametersPage != null)
|
||||
{
|
||||
type.GetField("deviceInfoText", flags)?.SetValue(tool, parametersPage.transform.Find("Viewport/Content/DeviceInfo").GetComponent<TextMeshProUGUI>());
|
||||
type.GetField("systemInfoText", flags)?.SetValue(tool, parametersPage.transform.Find("Viewport/Content/SystemInfo").GetComponent<TextMeshProUGUI>());
|
||||
type.GetField("parametersScrollRect", flags)?.SetValue(tool, parametersPage.GetComponent<ScrollRect>());
|
||||
}
|
||||
|
||||
// 自定义按钮页面
|
||||
type.GetField("customButtonsPage", flags)?.SetValue(tool, customButtonsPage);
|
||||
|
||||
@ -5,12 +5,10 @@ using TMPro;
|
||||
namespace MeowmentDebugTool
|
||||
{
|
||||
/// <summary>
|
||||
/// 设置模块 - 提供自动窗口尺寸适配与缓存池设置功能
|
||||
/// 设置模块 - 提供窗口全屏布局与缓存池设置功能
|
||||
/// </summary>
|
||||
public class SettingsModule : IDebugModule
|
||||
{
|
||||
private static readonly Vector2 DefaultReferenceResolution = new Vector2(1080f, 2340f);
|
||||
|
||||
#region 字段
|
||||
private GameObject settingsPage;
|
||||
private TMP_InputField widthInputField;
|
||||
@ -30,9 +28,7 @@ namespace MeowmentDebugTool
|
||||
|
||||
// 主窗口引用
|
||||
private RectTransform mainWindow;
|
||||
private Canvas canvas;
|
||||
|
||||
private Vector2 currentCustomResolution;
|
||||
private Vector2 detectedScreenResolution;
|
||||
|
||||
// 默认缓存池大小
|
||||
@ -45,7 +41,7 @@ namespace MeowmentDebugTool
|
||||
TMP_InputField infoBufferInput, TMP_InputField warningBufferInput,
|
||||
TMP_InputField errorBufferInput, TMP_InputField fatalBufferInput,
|
||||
Button applyBufferBtn, Button resetBufferBtn,
|
||||
RectTransform mainWin, Canvas canvasRef)
|
||||
RectTransform mainWin)
|
||||
{
|
||||
settingsPage = page;
|
||||
widthInputField = widthInput;
|
||||
@ -62,9 +58,6 @@ namespace MeowmentDebugTool
|
||||
resetBufferButton = resetBufferBtn;
|
||||
|
||||
mainWindow = mainWin;
|
||||
canvas = canvasRef;
|
||||
|
||||
currentCustomResolution = Vector2.zero;
|
||||
}
|
||||
#endregion
|
||||
|
||||
@ -73,8 +66,14 @@ namespace MeowmentDebugTool
|
||||
{
|
||||
Debug.Log("[SettingsModule] 初始化设置模块...");
|
||||
|
||||
if (widthInputField != null)
|
||||
widthInputField.readOnly = true;
|
||||
|
||||
if (heightInputField != null)
|
||||
heightInputField.readOnly = true;
|
||||
|
||||
if (applyResolutionButton != null)
|
||||
applyResolutionButton.onClick.AddListener(ApplyCustomResolutionFromInput);
|
||||
applyResolutionButton.interactable = false;
|
||||
|
||||
if (resetResolutionButton != null)
|
||||
resetResolutionButton.onClick.AddListener(RefreshAutoResolution);
|
||||
@ -85,7 +84,7 @@ namespace MeowmentDebugTool
|
||||
if (resetBufferButton != null)
|
||||
resetBufferButton.onClick.AddListener(ResetBufferSize);
|
||||
|
||||
// 自动识别并应用当前屏幕分辨率
|
||||
// 自动识别并应用当前屏幕全屏布局
|
||||
RefreshAutoResolution();
|
||||
|
||||
// 设置默认缓存池大小
|
||||
@ -108,11 +107,10 @@ namespace MeowmentDebugTool
|
||||
public void RefreshAutoResolution()
|
||||
{
|
||||
detectedScreenResolution = new Vector2(Screen.width, Screen.height);
|
||||
currentCustomResolution = DefaultReferenceResolution;
|
||||
UpdateResolutionInputs(currentCustomResolution);
|
||||
ApplyResolution(currentCustomResolution);
|
||||
UpdateResolutionInputs(detectedScreenResolution);
|
||||
ApplyResolution();
|
||||
|
||||
Debug.Log($"[SettingsModule] 已自动识别当前屏幕分辨率: {detectedScreenResolution.x} x {detectedScreenResolution.y},UI基准分辨率: {currentCustomResolution.x} x {currentCustomResolution.y}");
|
||||
Debug.Log($"[SettingsModule] 已刷新设备分辨率: {detectedScreenResolution.x} x {detectedScreenResolution.y},调试窗口使用全屏拉伸布局,不处理SafeArea");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -139,58 +137,19 @@ namespace MeowmentDebugTool
|
||||
#endregion
|
||||
|
||||
#region 私有方法
|
||||
private void ApplyResolution(Vector2 resolution)
|
||||
private void ApplyResolution()
|
||||
{
|
||||
CanvasScaler scaler = canvas != null ? canvas.GetComponent<CanvasScaler>() : null;
|
||||
if (scaler != null)
|
||||
{
|
||||
scaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize;
|
||||
scaler.screenMatchMode = CanvasScaler.ScreenMatchMode.MatchWidthOrHeight;
|
||||
scaler.referenceResolution = resolution;
|
||||
scaler.matchWidthOrHeight = 0.5f;
|
||||
}
|
||||
|
||||
FitMainWindowToSafeArea();
|
||||
FitMainWindowToFullScreen();
|
||||
|
||||
if (currentResolutionText != null)
|
||||
{
|
||||
currentResolutionText.text = $"设备: {detectedScreenResolution.x:0} x {detectedScreenResolution.y:0} / UI: {resolution.x:0} x {resolution.y:0}";
|
||||
currentResolutionText.text = $"设备: {detectedScreenResolution.x:0} x {detectedScreenResolution.y:0} / 调试窗口: 全屏拉伸";
|
||||
}
|
||||
|
||||
// 不需要强制刷新Canvas,会导致rebuild loop
|
||||
// Canvas会自动在下一帧更新
|
||||
}
|
||||
|
||||
private void ApplyCustomResolutionFromInput()
|
||||
{
|
||||
if (!TryGetResolutionFromInput(out Vector2 resolution))
|
||||
{
|
||||
Debug.LogWarning("[SettingsModule] 分辨率输入无效,应用失败");
|
||||
return;
|
||||
}
|
||||
|
||||
currentCustomResolution = resolution;
|
||||
ApplyResolution(resolution);
|
||||
Debug.Log($"[SettingsModule] 已应用自定义适配分辨率: {resolution.x} x {resolution.y}");
|
||||
}
|
||||
|
||||
private bool TryGetResolutionFromInput(out Vector2 resolution)
|
||||
{
|
||||
resolution = Vector2.zero;
|
||||
|
||||
if (widthInputField == null || heightInputField == null)
|
||||
return false;
|
||||
|
||||
if (!float.TryParse(widthInputField.text, out float width) || width <= 0f)
|
||||
return false;
|
||||
|
||||
if (!float.TryParse(heightInputField.text, out float height) || height <= 0f)
|
||||
return false;
|
||||
|
||||
resolution = new Vector2(width, height);
|
||||
return true;
|
||||
}
|
||||
|
||||
private void UpdateResolutionInputs(Vector2 resolution)
|
||||
{
|
||||
if (widthInputField != null)
|
||||
@ -200,7 +159,7 @@ namespace MeowmentDebugTool
|
||||
heightInputField.text = Mathf.RoundToInt(resolution.y).ToString();
|
||||
}
|
||||
|
||||
private void FitMainWindowToSafeArea()
|
||||
private void FitMainWindowToFullScreen()
|
||||
{
|
||||
if (mainWindow == null)
|
||||
return;
|
||||
@ -210,24 +169,8 @@ namespace MeowmentDebugTool
|
||||
mainWindow.pivot = new Vector2(0.5f, 0.5f);
|
||||
mainWindow.anchoredPosition = Vector2.zero;
|
||||
mainWindow.sizeDelta = Vector2.zero;
|
||||
|
||||
Rect safeArea = Screen.safeArea;
|
||||
RectTransform canvasRect = canvas != null ? canvas.transform as RectTransform : null;
|
||||
|
||||
if (canvasRect == null || canvasRect.rect.width <= 0f || canvasRect.rect.height <= 0f || Screen.width <= 0 || Screen.height <= 0)
|
||||
{
|
||||
mainWindow.offsetMin = Vector2.zero;
|
||||
mainWindow.offsetMax = Vector2.zero;
|
||||
return;
|
||||
}
|
||||
|
||||
float scaleX = canvasRect.rect.width / Screen.width;
|
||||
float scaleY = canvasRect.rect.height / Screen.height;
|
||||
|
||||
mainWindow.offsetMin = new Vector2(safeArea.xMin * scaleX, safeArea.yMin * scaleY);
|
||||
mainWindow.offsetMax = new Vector2(
|
||||
-(Screen.width - safeArea.xMax) * scaleX,
|
||||
-(Screen.height - safeArea.yMax) * scaleY);
|
||||
mainWindow.offsetMin = Vector2.zero;
|
||||
mainWindow.offsetMax = Vector2.zero;
|
||||
}
|
||||
|
||||
private void ApplyBufferSize()
|
||||
|
||||
@ -217,11 +217,17 @@ namespace MeowmentDebugTool
|
||||
// DetectFourFingerTap();
|
||||
// }
|
||||
|
||||
// 更新控制台模块
|
||||
if (consoleModule != null)
|
||||
// 仅在控制台页实际显示时更新控制台UI
|
||||
if (consoleModule != null && currentPageKey == "控制台" && mainWindow != null && mainWindow.gameObject.activeInHierarchy)
|
||||
{
|
||||
consoleModule.Update();
|
||||
}
|
||||
|
||||
// 参数页 Profiler 实时刷新
|
||||
if (parametersModule != null && currentPageKey == "参数" && mainWindow != null && mainWindow.gameObject.activeInHierarchy)
|
||||
{
|
||||
parametersModule.Update();
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
@ -378,8 +384,13 @@ namespace MeowmentDebugTool
|
||||
{
|
||||
Debug.Log("[MeowmentDebugTool] 初始化UniversalDebugTool...");
|
||||
|
||||
// 参数页不在启动阶段初始化,按需延迟创建
|
||||
// 参数页按需初始化,避免影响启动速度
|
||||
parametersModule = null;
|
||||
|
||||
if (parametersPage != null)
|
||||
{
|
||||
RegisterPage("参数", parametersPage);
|
||||
}
|
||||
|
||||
customButtonsModule = new CustomButtonsModule(
|
||||
customButtonsPage, buttonContainer, buttonPrefab, buttonsScrollRect, CloseDebugWindow);
|
||||
@ -396,7 +407,7 @@ namespace MeowmentDebugTool
|
||||
infoBufferInputField, warningBufferInputField,
|
||||
errorBufferInputField, fatalBufferInputField,
|
||||
applyBufferButton, resetBufferButton,
|
||||
mainWindow, canvas);
|
||||
mainWindow);
|
||||
|
||||
consoleModule = new ConsoleModule(
|
||||
consolePage, consoleLogScrollRect, consoleLogContent,
|
||||
@ -539,7 +550,11 @@ namespace MeowmentDebugTool
|
||||
pages[pageName].SetActive(true);
|
||||
currentPageKey = pageName;
|
||||
|
||||
if (pageName == "按钮" && customButtonsModule != null)
|
||||
if (pageName == "参数")
|
||||
{
|
||||
EnsureParametersModule()?.RefreshAllInfo();
|
||||
}
|
||||
else if (pageName == "按钮" && customButtonsModule != null)
|
||||
{
|
||||
customButtonsModule.EnsurePageViewInitialized();
|
||||
}
|
||||
@ -581,19 +596,18 @@ namespace MeowmentDebugTool
|
||||
return parametersModule;
|
||||
}
|
||||
|
||||
if (parametersPage == null || deviceInfoText == null || systemInfoText == null)
|
||||
if (parametersPage == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
parametersModule = new ParametersModule(
|
||||
parametersPage, deviceInfoText, systemInfoText, parametersScrollRect);
|
||||
parametersModule = new ParametersModule(parametersPage);
|
||||
parametersModule.Initialize();
|
||||
return parametersModule;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 复制设备信息到剪贴板
|
||||
/// 复制所有参数信息到剪贴板
|
||||
/// </summary>
|
||||
public void CopyDeviceInfoToClipboard()
|
||||
{
|
||||
@ -603,11 +617,11 @@ namespace MeowmentDebugTool
|
||||
return;
|
||||
}
|
||||
|
||||
EnsureParametersModule()?.CopyDeviceInfoToClipboard();
|
||||
EnsureParametersModule()?.CopyAllInfoToClipboard();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 复制系统信息到剪贴板
|
||||
/// 复制所有参数信息到剪贴板
|
||||
/// </summary>
|
||||
public void CopySystemInfoToClipboard()
|
||||
{
|
||||
@ -617,7 +631,7 @@ namespace MeowmentDebugTool
|
||||
return;
|
||||
}
|
||||
|
||||
EnsureParametersModule()?.CopySystemInfoToClipboard();
|
||||
EnsureParametersModule()?.CopyAllInfoToClipboard();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "com.bywaystudios.meowmentdebugtool",
|
||||
"displayName": "MeowmentDebugTool",
|
||||
"version": "0.4.2",
|
||||
"version": "0.5.2",
|
||||
"description": "\u8c03\u8bd5\u5de5\u5177\uff0c\u96c6\u6210\u4e86\u5ba2\u6237\u7aef\u6d4b\u8bd5\u65f6\u7684\u5e38\u7528\u529f\u80fd\uff0c\u652f\u6301\u6269\u5c55\u81ea\u5b9a\u4e49\u6309\u94ae\uff0c\u65b9\u4fbf\u5f00\u53d1\u8005\u8c03\u8bd5\u548c\u6d4b\u8bd5\u3002",
|
||||
"samples": [
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user