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

标签 unity3d textflow unity-ui

统一版本: 5.6.5f1 个人

TextMesh 专业版: 1.0.56.0b3

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

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

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

研究至今:

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

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

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

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

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

最佳答案

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

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

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

关于unity3d - Unity 如何在图像周围流动 TextMesh Pro 文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49445376/

相关文章:

unity3d - 我无法统一将 Sprite 拖入动画窗口

android - 如何减少 unity3d 中的绘图调用

html5 或 css 'smart text flow' 将句子或段落均匀分布在同样宽的行上?

java - WebView "embeddable"在 TextFlow 中吗?

带有突出显示文本的 JavaFX TableView

c# - Unity3d 在将脚本附加到游戏对象时做一些事情

c# - 使用瓷砖随机生成城市街道

c# - 重新启动按钮 Unity 3d C#

c# - 统一按钮点击不触发事件