根据TextMesh Pro文本大小的RectTransform坐标

时间:2018-09-30 16:40:17

标签: unity3d text scripting transform

我正在尝试创建一个带有动态(其文本内容可能有所不同)前缀的InputField(TextMesh Pro)。 这个壮观的图像应该可以说明目标。

https://imgur.com/a/qx1eXOa

因此,我将TextMeshPro文本设置为前缀,并且通过脚本我试图相应地“移动” TextArea。 事实是,TextArea是一个RectTransform,并且我正在ScreenSpace渲染模式下运行。

我正在尝试这样:

private TextMeshProGUI prefix;
private RecTransform textArea;


public void ChangePrefixTo(string newPrefix)
{
    float oldWidth = prefix.preferredWidth;

    prefix.text = newPrefix;
    float newWidth = prefix.preferredWidth;

    Vector2 newPos = new Vector2();
    newPos.x = textArea.position.x + (newWidth - oldWidth);
    newPos.y = textArea.position.y;

    textArea.position = newPos;
}

,但是textArea被射入星空。 如何根据TextMeshPro文本的大小映射RectTransform位置?

感谢您的帮助,鲸鱼万岁

1 个答案:

答案 0 :(得分:1)

您可以使用水平布局组中的两个元素,而不必使用脚本来调整前缀的大小,只需检查 Width 子控件的大小即可。

添加布局元素并设置“首选宽度”以定义TextArea的大小。

前缀将根据他的内容缩放,并随着文本区域的增长而推动文本区域。

您可以在此处找到一个演示:https://gph.is/2y0RXu0