【问题标题】:How to change placeholder text in Unity UI using script?如何使用脚本更改 Unity UI 中的占位符文本?
【发布时间】:2015-04-16 17:36:10
【问题描述】:

对于我的项目,默认值是根据外部输出计算的,可以使用新 Unity UI 中的输入字段更改这些值。如果值未更改,则计算后应出现灰色占位符。我真的不知道如何通过脚本更改占位符文本,甚至在任何地方都找不到解决方案。我试过这个:

gameObject.GetComponent<InputField>().placeholder = uv.value;

脚本附加到给定的输入字段游戏对象。但是,要在输入字段中获取书面值,我使用这行代码:

uv.value = gameObject.GetComponent<InputField>().text;

它工作正常。我错过了什么?一些帮助将不胜感激,写在这里是我最后的手段。谢谢转发!

【问题讨论】:

    标签: c# user-interface input unity3d


    【解决方案1】:

    占位符只是一个文本组件。您可以通过以下方式更改其文本:

    gameObject.GetComponent<InputField>().placeholder.GetComponent<Text>().text = "Something";
    

    注意GetComponent&lt;InputField&gt;().placeholder 是一个图形组件,它不是你要找的机器人:)

    【讨论】:

    • 谢谢,这解决了。但是,我不得不将值更改放到更新周期中。现在一切都是实时的:)。谢谢聪明的绝地大师。
    • 谢谢。但令我震惊的是,这是最好的方法 - Unity 生成的下拉菜单中的文本和占位符是相同的。 .placeholder 不引用 UI 文本类的方式非常愚蠢,并增加了不必要的混淆。
    【解决方案2】:

    您也可以向下转换 placeholder 对象,因为 Text 继承自 Graphic 类。 像这样的东西也可以。

    Graphic graphic = gameObject.GetComponent<InputField>().placeholder;
    ((Text)graphic).text = "Hello";
    

    【讨论】:

    • 这应该是公认的答案。虽然在将其分配给变量 graphic 时可能应该强制转换。
    【解决方案3】:

    这对我有用,但记得将占位符游戏对象分配给输入字段设置->占位符,否则你会得到一个空错误。

    TextMeshProUGUI placeholder = (TextMeshProUGUI)userNameInput.placeholder;
    

    placeholder.text = "你好";

    【讨论】:

      猜你喜欢
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 2012-03-03
      • 2023-03-03
      • 2020-05-12
      • 2013-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多