多轮审查评估
This commit is contained in:
@@ -9,12 +9,13 @@
|
||||
// ]
|
||||
// }
|
||||
//
|
||||
// 用法(静态 Facade,保持调用兼容):
|
||||
// LocalizationManager.Get("ui_start") → "开始游戏"
|
||||
// LocalizationManager.Get("dlg_hero", "Dialogue") → Dialogue 表中的对应文本
|
||||
//
|
||||
// 服务调用(通过 ServiceLocator):
|
||||
// 推荐用法(通过 ServiceLocator 获取 ILocalizationService 实例):
|
||||
// ServiceLocator.GetOrDefault<ILocalizationService>()?.Get("ui_start")
|
||||
// ServiceLocator.GetOrDefault<ILocalizationService>()?.SetLanguage(Language.English)
|
||||
//
|
||||
// 便捷静态方法(内部仍走 ServiceLocator,推荐在热路径之外使用):
|
||||
// LocalizationManager.Get("ui_start")
|
||||
// LocalizationManager.Get("dlg_hero", "Dialogue")
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@@ -28,7 +29,6 @@ namespace BaseGames.Localization
|
||||
/// 本地化管理器(MonoBehaviour,挂在 Persistent 场景)。
|
||||
/// 实现 ILocalizationService + ISaveable,通过 ServiceLocator 注册。
|
||||
/// 语言偏好持久化到 SaveData.Settings.Language,不使用 PlayerPrefs。
|
||||
/// 保留静态 Get() Facade,现有调用方无需修改。
|
||||
/// </summary>
|
||||
public class LocalizationManager : MonoBehaviour, ILocalizationService, ISaveable
|
||||
{
|
||||
@@ -39,15 +39,12 @@ namespace BaseGames.Localization
|
||||
// 双层缓存:languageKey("ChineseSimplified/UI") → (key → value)
|
||||
private readonly Dictionary<string, Dictionary<string, string>> _cache = new();
|
||||
|
||||
// ── 静态事件代理(向后兼容静态订阅方式)─────────────────────────────────
|
||||
/// <summary>语言切换时触发(静态代理,可通过 LocalizationManager.OnLanguageChanged += 订阅)。</summary>
|
||||
public static event Action<Language> OnLanguageChanged;
|
||||
|
||||
// ILocalizationService 显式实现:委托给静态事件
|
||||
// ILocalizationService 实例事件
|
||||
private event Action<Language> _onLanguageChanged;
|
||||
event Action<Language> ILocalizationService.OnLanguageChanged
|
||||
{
|
||||
add { OnLanguageChanged += value; }
|
||||
remove { OnLanguageChanged -= value; }
|
||||
add => _onLanguageChanged += value;
|
||||
remove => _onLanguageChanged -= value;
|
||||
}
|
||||
|
||||
// ── 生命周期 ──────────────────────────────────────────────────────────
|
||||
@@ -80,7 +77,7 @@ namespace BaseGames.Localization
|
||||
{
|
||||
if (_currentLanguage == language) return;
|
||||
_currentLanguage = language;
|
||||
OnLanguageChanged?.Invoke(language);
|
||||
_onLanguageChanged?.Invoke(language);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -118,7 +115,7 @@ namespace BaseGames.Localization
|
||||
SetLanguage(lang);
|
||||
}
|
||||
|
||||
// ── 静态 Facade(保持现有调用方不变)────────────────────────────────────
|
||||
// ── 静态便捷方法 ─────────────────────────────────────────────────────────
|
||||
/// <summary>
|
||||
/// 静态快捷获取本地化字符串。委托给 ILocalizationService 实例;服务未注册时直接返回 key。
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user