MeowmentDebugTool/Packages/com.bywaystudios.meowmentdebugtool/Runtime/ToolbarModule.cs
2025-12-22 15:29:55 +08:00

143 lines
4.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using UnityEngine;
using UnityEngine.UI;
using TMPro;
namespace MeowmentDebugTool
{
/// <summary>
/// 工具栏模块 - 提供时间调整等工具
/// </summary>
public class ToolbarModule : IDebugModule
{
#region
private GameObject toolbarPage;
private Slider timeAdjustSlider;
private TMP_Text timeAdjustValueText;
private Button timeIncreaseButton;
private Button timeDecreaseButton;
private float timeAdjustValue = 60f; // 当前设置的时间调整值(秒)
#endregion
#region
public ToolbarModule(GameObject page, Slider slider, TMP_Text valueText,
Button increaseButton, Button decreaseButton)
{
toolbarPage = page;
timeAdjustSlider = slider;
timeAdjustValueText = valueText;
timeIncreaseButton = increaseButton;
timeDecreaseButton = decreaseButton;
}
#endregion
#region IDebugModule
public void Initialize()
{
Debug.Log("[ToolbarModule] 初始化工具栏模块...");
// 设置时间调整工具
if (timeAdjustSlider != null)
{
timeAdjustSlider.onValueChanged.AddListener(OnTimeAdjustValueChanged);
// 初始化显示
UpdateTimeAdjustDisplay(timeAdjustSlider.value);
}
if (timeIncreaseButton != null)
timeIncreaseButton.onClick.AddListener(OnIncreaseTime);
if (timeDecreaseButton != null)
timeDecreaseButton.onClick.AddListener(OnDecreaseTime);
}
public GameObject GetPage()
{
return toolbarPage;
}
public string GetModuleName()
{
return "工具栏";
}
#endregion
#region
/// <summary>
/// 时间调整Slider值改变回调只更新显示不改变时间
/// </summary>
private void OnTimeAdjustValueChanged(float value)
{
timeAdjustValue = value;
UpdateTimeAdjustDisplay(value);
}
/// <summary>
/// 更新时间调整显示
/// </summary>
private void UpdateTimeAdjustDisplay(float seconds)
{
if (timeAdjustValueText != null)
{
if (seconds < 60)
{
timeAdjustValueText.text = $"{seconds:F0}秒";
}
else
{
float minutes = seconds / 60f;
timeAdjustValueText.text = $"{minutes:F1}分钟";
}
}
}
/// <summary>
/// 增加时间
/// </summary>
private void OnIncreaseTime()
{
// 修改系统时间这里演示修改Time.time的偏移
float adjustSeconds = timeAdjustValue;
// 注意Time.time本身无法直接修改这里提供一个可以被重写的方法
// 实际项目中,你应该修改游戏内的时间变量
AdjustGameTime(adjustSeconds);
Debug.Log($"⏰ [ToolbarModule] 增加时间: +{adjustSeconds}秒");
}
/// <summary>
/// 减少时间
/// </summary>
private void OnDecreaseTime()
{
float adjustSeconds = -timeAdjustValue;
AdjustGameTime(adjustSeconds);
Debug.Log($"⏰ [ToolbarModule] 减少时间: {adjustSeconds}秒");
}
/// <summary>
/// 调整游戏时间(示例方法,需要根据实际项目修改)
/// </summary>
private void AdjustGameTime(float seconds)
{
// 方案1: 如果你的项目有全局时间管理器
// TimeManager.Instance?.AddTime(seconds);
// 方案2: 如果你使用DateTime
// GameTime.Current = GameTime.Current.AddSeconds(seconds);
// 方案3: 临时演示 - 修改Time.timeScale来模拟时间变化
// 实际项目中应该修改你自己的时间变量
Debug.Log($"💡 提示: 请在AdjustGameTime方法中实现你的时间调整逻辑");
Debug.Log($"💡 建议: 修改游戏内的时间变量,例如 GameTime.Current.AddSeconds({seconds})");
// 示例:如果你有一个静态的游戏时间偏移量
// GameTimeOffset += seconds;
}
#endregion
}
}