多轮审查和修复
This commit is contained in:
25
Assets/Scripts/Core/Save/SaveableMonoBehaviour.cs
Normal file
25
Assets/Scripts/Core/Save/SaveableMonoBehaviour.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user