Files
2025TapTapGameJam/Assets/Script/Gameplay/Global/TimePauseManager.cs

53 lines
1.5 KiB
C#
Raw Normal View History

2025-10-18 09:13:25 +08:00
using UnityEngine;
using System;
using Core;
namespace Script.Gameplay.Global
{
/// <summary>
/// 全局时间暂停管理器。
/// 单例,挂载到场景里任意常驻 GameObject如 Managers
/// </summary>
public class TimePauseManager : MonoSingleton<TimePauseManager>
{
/// <summary> 当前是否处于暂停状态 </summary>
public bool IsPaused { get; private set; }
/// <summary> 暂停/恢复时触发,参数 true=暂停false=恢复 </summary>
public event Action<bool> OnPauseStateChanged;
[Header("调试按钮")]
[SerializeField] private bool _pauseToggle;
private void OnValidate()
{
// Inspector 里打钩立即生效(仅 Editor
if (Application.isPlaying && Instance == this)
SetPaused(_pauseToggle);
}
/// <summary>
/// 外部调用:设置暂停状态
/// </summary>
public void SetPaused(bool pause)
{
if (IsPaused == pause) return;
IsPaused = pause;
Time.timeScale = pause ? 0f : 1f;
OnPauseStateChanged?.Invoke(pause);
}
/// <summary>
/// 快捷暂停
/// </summary>
public static void Pause() => Instance.SetPaused(true);
/// <summary>
/// 快捷恢复
/// </summary>
public static void Resume() => Instance.SetPaused(false);
}
}