存档完善和修复

This commit is contained in:
2026-05-20 15:45:11 +08:00
parent 8ae2de5bcb
commit c50f8a6cf7
3 changed files with 16 additions and 4 deletions

View File

@@ -48,8 +48,8 @@ namespace BaseGames.Core.Save
{
// 2.2 删除 EquipmentSaveData.NotchesUsed冗余由 TryEquipCharm 重新计算)。
// 2.2 删除 PlayerSaveData.ShieldHP / ShieldIsBroken护盾在存档点始终全满无需持久化
// 2.2 删除 SettingsSaveData.Language(全局设置由 SettingsManager 写入 settings.json)。
// 旧存档中这些字段由 Newtonsoft.Json 的 [JsonExtensionData] 忽略,无需额外处理。
// SettingsSaveData.Language 字段保留(由 LocalizationManager 负责按存档槽读写)。
// 旧存档中已删除的字段由 Newtonsoft.Json 的 [JsonExtensionData] 忽略,无需额外处理。
// Equipment.MaxNotches旧存档若为 0EquipmentManager.OnLoad 回退到初始 Notch 数量。
if (data.Equipment != null && data.Equipment.MaxNotches == 0)
data.Equipment.MaxNotches = 0; // 保持 0OnLoad 回退到 config.initialNotchCount

View File

@@ -85,8 +85,17 @@ namespace BaseGames.Player
_unlockedAbilities = _config.InitialAbilities;
}
private void OnEnable() => _onDifficultyChanged?.Subscribe(HandleDifficultyChanged).AddTo(_subs);
private void OnDisable() => _subs.Clear();
private void OnEnable()
{
ServiceLocator.GetOrDefault<ISaveableRegistry>()?.Register(this);
_onDifficultyChanged?.Subscribe(HandleDifficultyChanged).AddTo(_subs);
}
private void OnDisable()
{
ServiceLocator.GetOrDefault<ISaveableRegistry>()?.Unregister(this);
_subs.Clear();
}
private void HandleDifficultyChanged(DifficultyLevel _)
{

View File

@@ -41,6 +41,9 @@ namespace BaseGames.Progression
InitStates();
}
private void OnEnable() => ServiceLocator.GetOrDefault<ISaveableRegistry>()?.Register(this);
private void OnDisable() => ServiceLocator.GetOrDefault<ISaveableRegistry>()?.Unregister(this);
private void OnDestroy()
{
ServiceLocator.Unregister<IAchievementService>(this);