Unity 如何在图像周围流动 TextMesh Pro 文本?

Unity How do I Flow TextMesh Pro Text around an Image?

Unity 版本: 5.6.5f1 个人版

TextMesh 专业版:1.0.56.0b3

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

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

当前与期望的结果:

目前研究:

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

这可以通过TextMeshPro的"Linked"溢出模式来实现。有关示例,请参见附图。本质上,您需要创建两个 TMP 对象并适当地调整每个对象的布局。那么:

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

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