using System.Collections.Generic; using Cielonos.MainGame.Inventory; using SLSUtilities.General; using SLSUtilities.UI; using TMPro; using UnityEngine; using UnityEngine.UI; namespace Cielonos.MainGame.UI { /// /// 单条物品描述条目 UI 组件。 /// 渲染管线:Localize → DisplayTextResolver.Resolve → InputGlyphParser.Parse → TMP_Text。 /// public class ItemDescriptionEntry : MonoBehaviour { private const string LocalizationTable = "Items"; [Tooltip("描述文本,显示 descriptionKey 的本地化内容(含动态数值替换和按键图标解析)。")] public TMP_Text descriptionText; /// /// 使用 的数据填充描述条目。 /// 完整渲染管线:本地化 → {key} 占位符替换 → [Token] 按键图标解析。 /// /// 描述数据。 /// 可选的动态值字典,用于替换本地化文本中的 {key} 占位符。 public void SetDescription(ItemDescription description, Dictionary descriptionArgs = null) { if (description == null) { Clear(); return; } if (descriptionText == null) return; if (string.IsNullOrEmpty(description.descriptionKey)) { descriptionText.text = string.Empty; return; } string localizedText = description.descriptionKey.Localize(LocalizationTable); localizedText = DisplayTextResolver.Resolve(localizedText, descriptionArgs); descriptionText.text = InputGlyphParser.Parse(localizedText); } /// 清空条目内容。 public void Clear() { if (descriptionText != null) { descriptionText.text = string.Empty; } } } }