【问题标题】:Unity How do I Flow TextMesh Pro Text around an Image?Unity 如何在图像周围流动 TextMesh Pro 文本?
【发布时间】:2018-09-01 21:03:45
【问题描述】:

Unity 版本: 5.6.5f1 个人版

TextMesh 专业版: 1.0.56.0b3

我有一个 TextMesh Pro UI 文本对象,其区域与 UI 图像的区域相交。文字是动态的,但图像永远不会改变。有没有办法让 TextMesh Pro UI 文本在图像周围流动,类似于 HTML/CSS 中文本在一侧换行的方式?

下图显示了 Unity 中对象的两个副本。一个对象,由图像所在的红色空间表示,是我目前得到的。文本进入图像的空间。另一个对象,由图像所在的蓝色空间表示,显示了文本正确换行的预期结果。

当前与预期结果:

迄今为止的研究:

How do I put an image inside text? - 我使用的图像是 UI 图像,而不是文本资源。图像只会作用就好像它与文本内嵌一样。

How do you wrap text around a rectangle?, Fluid layout for Unity UI - 这些就是我要找的。但是,其中没有任何建议。

我探索了使用多个 TextMesh Pro UI 文本对象的想法,每个对象都充当完整文本区域的片段。但是,这与在图像周围环绕文本不同。对于动态文本,如果我从一个文本区域提取内容并将其推送到下一个区域,这将与自动调整大小功能冲突并导致字体大小不等。

另一种可能性是我可以一次插入一个字符,检查添加另一个字符是否会导致与图像发生冲突,并添加System.Environment.Newline 以防止这种情况。但是,我担心处理大量文本会带来潜在的性能问题。

TextMesh Pro Documentation - TextMesh Pro 文档有一些用于查找自动换行点的工具,但我还没有想出如何实现将其与另一个对象的锚点位置进行比较的方法。

【问题讨论】:

  • 你找到解决办法了吗?
  • 很遗憾,没有。我一直在尝试定义一个明确的空间,其中不应允许文本作为脚本中的变量。但是,通过尝试这样做,文本将被重构。如果文本已经填充到容器中,则存在溢出的可能性。决定,决定。
  • 运气好能找到解决方案吗?
  • 嘿,@AndrewPullins。很不幸的是,不行。我已经有一段时间没有重新审视这个问题了。现实生活中的东西。

标签: unity3d textflow unity-ui


【解决方案1】:

这可以通过TextMeshPro的“链接”溢出模式来完成。示例见附图。本质上,您需要制作两个 TMP 对象并适当调整每个对象的布局。那么:

1) 使用检查器中的下拉菜单将第一个溢出模式更改为“链接”。

2) 将第二个 TMP 对象作为引用放置在出现的字段中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    相关资源
    最近更新 更多