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

时间:2018-03-23 08:34:24

标签: unity3d textflow unity-ui

Unity版本: 5.6.5f1个人

TextMesh专业版: 1.0.56.0b3

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

下图显示了Unity中对象的两个副本。一个物体,由图像所在的红色空间表示,是我目前所获得的。文本进入图像的空间。另一个对象,由图像所在的蓝色空间表示,显示文本正确包装的所需结果。

当前与期望的结果: Current vs. Desired Outcome

到目前为止的研究:

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

1 个答案:

答案 0 :(得分:5)

enter image description here这可以通过TextMeshPro的“链接”溢出模式来完成。有关示例,请参见所附图片。本质上,您将需要制作两个TMP对象,并为每个对象适当地调整布局。然后:

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

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

相关问题