using UnityEngine;
namespace GameFramework
{
///
/// 持久化单例基类。跨场景保留(DontDestroyOnLoad),重复实例自动销毁。
/// 管理器(AudioManager / ScoreManager / GameManager / SceneLoader)都继承它。
///
public class PersistentSingleton : MonoBehaviour where T : Component
{
public static T Instance { get; private set; }
protected virtual void Awake()
{
if (Instance == null)
{
Instance = this as T;
}
else if (Instance != this)
{
Destroy(gameObject);
return;
}
DontDestroyOnLoad(gameObject);
}
}
}