【问题标题】:How to translate TextMeshPro-StyleTags to the actual RichText in Unity?如何在 Unity 中将 TextMeshPro-StyleTags 转换为实际的 RichText?
【发布时间】:2021-04-17 16:08:22
【问题描述】:

我在 TextMeshPro 中有以下字符串:“”。

我想将 StyleTag 转换为定义的打开标签。 对于此示例,它将上面的字符串转换为以下内容:“This is a Title (...)”。

我该怎么做?

【问题讨论】:

  • 这会回答你的问题吗:Way to have String.Replace only hit "whole words"? ...否则是的,您可以创建自定义标签,但这需要对源代码进行某种黑客攻击..参见例如Attempting to add custom tags to the rich text systemsimilar 帖子
  • @derHugo 那行不通,因为我不想替换字符串的已知部分。我想用 TextMeshPro 样式表中定义的实际内容替换 StyleTags。 StyleTag 会定期更改、添加和删除,以及它们转换为的开始标签。
  • 建立一个标签字典,你知道如何处理它们并搜索和替换它们

标签: css unity3d user-interface richtext


【解决方案1】:

您可以通过调用以下函数将 OpeningTags 获取到 StyleTag:TMP_StyleSheet.GetStyle("[StyleName]").styleOpeningDefinitionTMP_StyleSheet 是对使用的 TMP-StyleSheet 的引用)。

因此,一种可能的解决方案是从您的字符串中提取 StyleName(例如,“(...text) <style=Example> (text...)”将变为“Example”)并将其提供给上面的函数。 Regular Expressions 可以帮助从您的字符串中提取 StyleName。然后用函数返回的任何内容替换整个标签(例如“<size=125%>”)。 (注意:如果标签不存在,则返回 Null)。然后对结束标签做同样的事情。

【讨论】:

  • 我希望有一个更简单、更少定制的解决方案。但这听起来可行,谢谢!
猜你喜欢
  • 2022-01-14
  • 2012-08-10
  • 2016-08-27
  • 2011-08-20
  • 2016-10-23
  • 1970-01-01
  • 2023-03-30
相关资源
最近更新 更多