【问题标题】:In Unity3D inputField is treated as a placeholder在 Unity3D 中 inputField 被视为占位符
【发布时间】:2020-02-20 15:44:46
【问题描述】:

我的目标:将 sqlite 数据库中的值作为文本放入 inputField。我希望用户能够更新该数据库的记录/值。 Baically,我正在尝试制作一个类似于 iPhone 上的笔记的笔记应用程序。

我的问题:文本显示在文本和内容字段内的字段中,包括输入光标/插入符号。当用户点击文本字段时,它会将所有内容重置为空。

我的尝试:我创建了一个脚本,它将 inputField 中的文本值更改为从数据库中获取的值。文本按预期更新。然后,只要我或其他用户按下 inputField,该值就会消失,类似于占位符的工作方式。但是,我希望该值保持不变,以便用户可以对其进行编辑。

代码:

TextMeshProUGUI contenttext =
  input1.transform.Find("Text").GetComponentInChildren<TextMeshProUGUI>();
contenttext.text = source;

假设更新text 组件,它是text area 的子组件,contentfield 的子组件。这是beforeafter检查员的照片。

【问题讨论】:

  • 您的问题是GetComponentInChildren&lt;TextMeshProUGUI&gt;(); 只是返回找到的该类型的第一个组件,它似乎是占位符的组件,而不是实际的文本。通常你宁愿做inputField.text = "..."; 而不是“手动”直接通过文本组件
  • 您不应该尝试Find() 包含TextMeshProUGUI 的游戏对象并调用.GetComponent&lt;TextMeshProUGUI&gt; 吗?为什么要获取它的子组件?
  • @derhugo 它仍然产生相同的效果。
  • @innat3 这是另一种方式,而不是使用 find() 来查看每个对象。您可以查看已设置对象的子对象。
  • @alde 现在我想如果你想设置 InputField 的文本,你必须在TMP_InputField 组件的text 属性中设置它,而不是TextMeshProUGUI

标签: c# unity3d input-field


【解决方案1】:

您需要在TMP_InputField.text字段中设置值,而不是TextMeshProUGUI

input1.transform.Find("Text").GetComponentInChildren<TMP_InputField>().text = source;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多