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); } }