From c50f8a6cf7d70d1224131a4e805d2b69de70c455 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Wed, 20 May 2026 15:45:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=98=E6=A1=A3=E5=AE=8C=E5=96=84=E5=92=8C?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/_Game/Scripts/Core/Save/SaveMigrator.cs | 4 ++-- Assets/_Game/Scripts/Player/PlayerStats.cs | 13 +++++++++++-- .../_Game/Scripts/Progression/AchievementManager.cs | 3 +++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/Assets/_Game/Scripts/Core/Save/SaveMigrator.cs b/Assets/_Game/Scripts/Core/Save/SaveMigrator.cs index 30679f1..240f672 100644 --- a/Assets/_Game/Scripts/Core/Save/SaveMigrator.cs +++ b/Assets/_Game/Scripts/Core/Save/SaveMigrator.cs @@ -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:旧存档若为 0,EquipmentManager.OnLoad 回退到初始 Notch 数量。 if (data.Equipment != null && data.Equipment.MaxNotches == 0) data.Equipment.MaxNotches = 0; // 保持 0,OnLoad 回退到 config.initialNotchCount diff --git a/Assets/_Game/Scripts/Player/PlayerStats.cs b/Assets/_Game/Scripts/Player/PlayerStats.cs index 9d301c1..1e9820a 100644 --- a/Assets/_Game/Scripts/Player/PlayerStats.cs +++ b/Assets/_Game/Scripts/Player/PlayerStats.cs @@ -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()?.Register(this); + _onDifficultyChanged?.Subscribe(HandleDifficultyChanged).AddTo(_subs); + } + + private void OnDisable() + { + ServiceLocator.GetOrDefault()?.Unregister(this); + _subs.Clear(); + } private void HandleDifficultyChanged(DifficultyLevel _) { diff --git a/Assets/_Game/Scripts/Progression/AchievementManager.cs b/Assets/_Game/Scripts/Progression/AchievementManager.cs index 51f5428..abd4a6e 100644 --- a/Assets/_Game/Scripts/Progression/AchievementManager.cs +++ b/Assets/_Game/Scripts/Progression/AchievementManager.cs @@ -41,6 +41,9 @@ namespace BaseGames.Progression InitStates(); } + private void OnEnable() => ServiceLocator.GetOrDefault()?.Register(this); + private void OnDisable() => ServiceLocator.GetOrDefault()?.Unregister(this); + private void OnDestroy() { ServiceLocator.Unregister(this);