【问题标题】:relative positioning of text object in unity3Dunity3D中文本对象的相对定位
【发布时间】:2017-06-28 06:31:43
【问题描述】:

在 Unity 中,我想根据第一个对象的长度将 UI 文本对象与另一个文本对象对齐。比如:“[阿拉丁] 说:你好,世界”。 其中“[Aladinn]”是(可点击的)第一个文本,“says: hello world”是第二个文本。 显然,第一个文本的长度可能会有所不同。

我找到了一些方法来根据文本框的内容设置文本框的长度,但是有没有办法将第二个文本的开头附加到第一个文本的结尾,同时保持它们独立的对象?

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    您正在寻找Text#preferredWidth

    文档页面上的描述不是很有帮助,但这个值是“这段文本想要要多长时间?” PreferredHeight 是一样的,除了高度。

    所以要找出另一个对象的文本在哪里结束,你必须得到它的 Text 组件并查询它的首选宽度和瞧,你有它的大小(以像素为单位,对于 Canvas 对象来说,它几乎肯定会成为它的场景尺寸也是如此,除非你用比例做过淘气的事)。

    我在one of my projects 中使用它来使鼠标悬停的工具提示看起来不错,方法是尝试各种宽度和高度值,直到达到所需的比例。这有点复杂,但这与首选宽度和高度假设某些事情的事实有关(首选宽度希望将字符串显示在一行上,而首选高度考虑到 当前宽度并假设换行符包含在所需的高度中)。

    【讨论】:

      【解决方案2】:

      根据您对问题的描述,我建议使用脚本来更改文本的字符串,而不是使用两个单独的文本对象。

      这对于您对问题的描述来说很好:

      public string name;
      public string flavorText;
      public Text textUIComponnent;
      

      然后在代码的某个地方,例如在 Start 中:

      void Start {
      textUIComponnent.text = name + " " + flavorText;
      [...]
      }
      

      【讨论】:

        猜你喜欢
        • 2012-04-08
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多