143 lines
4.5 KiB
C#
143 lines
4.5 KiB
C#
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
|
||
}
|
||
}
|