using UnityEngine;
using BaseGames.Core;
namespace BaseGames.Core.Save
{
///
/// 带自动注册/注销的 ISaveable MonoBehaviour 基类。
/// 继承此类可消除每个存档对象手动调用 ServiceLocator.GetOrDefault<SaveManager>()?.Register/Unregister 的样板代码。
///
/// 生命周期:
/// OnEnable → ServiceLocator.GetOrDefault<SaveManager>()?.Register(this)
/// OnDisable → ServiceLocator.GetOrDefault<SaveManager>()?.Unregister(this)
///
/// 子类只需实现 和 。
/// 若子类需要自定义 OnEnable/OnDisable,请先调用 base.OnEnable() / base.OnDisable()。
///
public abstract class SaveableMonoBehaviour : MonoBehaviour, ISaveable
{
protected virtual void OnEnable() => ServiceLocator.GetOrDefault()?.Register(this);
protected virtual void OnDisable() => ServiceLocator.GetOrDefault()?.Unregister(this);
public abstract void OnSave(SaveData saveData);
public abstract void OnLoad(SaveData saveData);
}
}