【问题标题】:RectTransform coordinates according to TextMesh Pro text size根据 TextMesh Pro 文本大小的 RectTransform 坐标
【发布时间】:2019-03-05 21:44:51
【问题描述】:

我正在尝试创建一个带有动态(其文本内容可能会有所不同)前缀的 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 位置?

感谢您的帮助,鲸鱼万岁

【问题讨论】:

    标签: unity3d text scripting transform


    【解决方案1】:

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

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

    前缀会根据他的内容进行缩放,它会随着文本区域的增长而推动你的文本区域。

    【讨论】:

    • 花式。我欠你一杯啤酒。
    • 随时喝啤酒! :) 如果它对您有用,您可以将答案标记为已接受,它可能对其他人有所帮助。谢谢!
    • Demo 改为私有,请编辑或寻找其他方式发布。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    相关资源
    最近更新 更多