阶段性完成

This commit is contained in:
SoulliesOfficial
2026-07-25 13:27:53 -04:00
parent de70870682
commit a34461d31f
121 changed files with 7022 additions and 4111 deletions

View File

@@ -2,6 +2,7 @@ using System.Collections.Generic;
using Ichni.Story.Dialogue;
using TMPro;
using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.UI;
namespace Ichni.Story.UI
@@ -24,6 +25,21 @@ namespace Ichni.Story.UI
// 当前已实例化的状态背景对象;状态切换时销毁并替换
private GameObject _currentVisual;
// 直接持有 StoryData 的 LocalizedString并订阅其 StringChanged 回调。
// Unity Localization 会在首次订阅和语言切换时自行异步刷新文本。
private LocalizedString _titleReference;
private bool _isTitleLocalizationSubscribed;
private void OnEnable()
{
StartTitleLocalization();
}
private void OnDisable()
{
StopTitleLocalization();
}
public override void Initialize(StoryBlockDefinition def, Vector2 position, StoryBlockState blockState)
{
// 注意base.Initialize 末尾会调用 ApplyState(state),届时已生成对应背景
@@ -34,9 +50,43 @@ namespace Ichni.Story.UI
if (storyIdText != null)
storyIdText.text = def.blockId;
// 当前仍直接显示 titleKey正式内容接入时需要由 Unity Localization 解析玩家可见标题。
StopTitleLocalization();
_titleReference = def.title;
StartTitleLocalization();
}
/// <summary>
/// 订阅当前 TextBlock 的 LocalizedString。无需手写 Table / Key 读取或监听全局 Locale
/// LocalizedString 会遵循 Unity 官方生命周期异步加载,并在语言变化后触发 StringChanged。
/// </summary>
private void StartTitleLocalization()
{
if (_isTitleLocalizationSubscribed || titleText == null)
return;
if (_titleReference == null || _titleReference.IsEmpty)
{
titleText.text = blockId;
return;
}
_titleReference.StringChanged += ApplyLocalizedTitle;
_isTitleLocalizationSubscribed = true;
}
private void StopTitleLocalization()
{
if (!_isTitleLocalizationSubscribed || _titleReference == null)
return;
_titleReference.StringChanged -= ApplyLocalizedTitle;
_isTitleLocalizationSubscribed = false;
}
private void ApplyLocalizedTitle(string localizedTitle)
{
if (titleText != null)
titleText.text = def.titleKey;
titleText.text = string.IsNullOrEmpty(localizedTitle) ? blockId : localizedTitle;
}
/// <summary>