UI系统优化
This commit is contained in:
@@ -12,12 +12,49 @@ namespace BaseGames.Localization
|
||||
|
||||
/// <summary>
|
||||
/// 获取本地化字符串。查找顺序:当前语言 → 回退语言(English)→ 直接返回 key。
|
||||
/// 表名建议使用 <see cref="LocalizationTable"/> 中的常量。
|
||||
/// </summary>
|
||||
string Get(string key, string table = "UI");
|
||||
string Get(string key, string table = LocalizationTable.UI);
|
||||
|
||||
/// <summary>
|
||||
/// 尝试获取本地化字符串。返回 false 表示 key 在所有语言(含回退)中均不存在。
|
||||
/// 与 <see cref="Get"/> 不同:key 不存在时不会将 key 本身作为值返回。
|
||||
/// 适用于需要区分"key 存在但值为空"和"key 完全不存在"的场景。
|
||||
/// </summary>
|
||||
bool TryGet(string key, out string value, string table = LocalizationTable.UI);
|
||||
|
||||
/// <summary>
|
||||
/// 获取带格式化参数的本地化字符串(<c>string.Format</c> 风格)。
|
||||
/// 例:<c>GetFormat("REWARD_GOLD", LocalizationTable.UI, amount)</c> → "获得 100 灵珠"。
|
||||
/// 格式化失败时静默返回原始模板字符串,不抛出异常。
|
||||
/// </summary>
|
||||
string GetFormat(string key, string table, params object[] args);
|
||||
|
||||
/// <summary>切换游戏语言并通知所有订阅者刷新文本。</summary>
|
||||
void SetLanguage(Language language);
|
||||
|
||||
/// <summary>
|
||||
/// 同步预热指定语言的所有已知本地化表,避免首次访问时产生帧卡顿。
|
||||
/// 在主线程阻塞执行,建议改用 <see cref="PreloadTablesAsync"/> 分帧加载。
|
||||
/// </summary>
|
||||
void PreloadTables(Language language);
|
||||
|
||||
/// <summary>
|
||||
/// 异步分帧预热指定语言的所有本地化表(每帧加载一个表,不阻塞主线程)。
|
||||
/// 建议在 Loading Screen 的协程中调用。
|
||||
/// </summary>
|
||||
/// <param name="language">要预热的语言。</param>
|
||||
/// <param name="onComplete">全部表加载完成后的回调(可为 null)。</param>
|
||||
void PreloadTablesAsync(Language language, Action onComplete = null);
|
||||
|
||||
/// <summary>
|
||||
/// 获取带数量的复数形式本地化字符串。
|
||||
/// 规则:先查找 "{key}_one"(count==1)或 "{key}_other"(count≠1),找不到则回退到基础 key。
|
||||
/// 查找到的模板以 <c>string.Format(template, count)</c> 展开,{0} 代入 count。
|
||||
/// 示例:key="ITEM_COUNT",表中配置 "ITEM_COUNT_other"="获得 {0} 个物品" → "获得 5 个物品"。
|
||||
/// </summary>
|
||||
string GetPlural(string key, int count, string table = LocalizationTable.UI);
|
||||
|
||||
/// <summary>语言切换时触发。</summary>
|
||||
event Action<Language> OnLanguageChanged;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user