【发布时间】: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 的子组件。这是before和after检查员的照片。
【问题讨论】:
-
您的问题是
GetComponentInChildren<TextMeshProUGUI>();只是返回找到的该类型的第一个组件,它似乎是占位符的组件,而不是实际的文本。通常你宁愿做inputField.text = "...";而不是“手动”直接通过文本组件 -
您不应该尝试
Find()包含TextMeshProUGUI的游戏对象并调用.GetComponent<TextMeshProUGUI>吗?为什么要获取它的子组件? -
@derhugo 它仍然产生相同的效果。
-
@innat3 这是另一种方式,而不是使用 find() 来查看每个对象。您可以查看已设置对象的子对象。
-
@alde 现在我想如果你想设置 InputField 的文本,你必须在
TMP_InputField组件的text属性中设置它,而不是TextMeshProUGUI
标签: c# unity3d input-field