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