我已经为此坚持不懈地工作了几个小时,但似乎没有取得任何进展,所以您的帮助将不胜感激。我在Unity中创建了几个TextMeshPro UI InputFields,在用户输入内容后似乎无法访问文本。我可以做到这一点,当它是一个普通的InputField,而不是与TM专业版。我已经创建了一个TMP_InputField类型的Serializefield,并将其挂接到检查器中(还包括使用TMPro命名空间)。谁能概述一下将文本放入变量所需的步骤,因为我被难住了!该脚本当前位于不同的GameObject上。我有一个名为theFields的TMP_InputField类型的数组,当我调试theFields.name时,它似乎工作得很好(使用FindObjectsOfType<>),但是当我试图访问一个specificField.text时,当我试图在游戏期间编辑字段时,它抛出了一个空引用异议。任何教程/支持都将非常受欢迎!
发布于 2019-07-28 15:29:20
您是否尝试过在TMP_InputField的检查器上使用UnityEvents字段?
我创建了一个简单的脚本,它与TMP_InputField结合在一起
using UnityEngine;
public class InputfieldListener : MonoBehaviour
{
public void OnChangedInputField(string input)
{
Debug.Log("[OnChangedInputField] " + input);
}
public void OnEndedInputField(string input)
{
Debug.Log("[OnEndedInputField] " + input);
}
public void OnSelectedInputField(string input)
{
Debug.Log("[OnSelectedInputField] " + input);
}
public void OnDeslectedInputField(string input)
{
Debug.Log("[OnDeslectedInputField] " + input);
}
}
然后您可以找到每个事件的日志。
仅供参考,创建者有一个youtube channel和一个related video tutorial。
发布于 2020-12-10 01:24:10
using TMPro;
public TMP_InputField TMP_IF;
TMP_IF.interactable = true;
TMP_IF.text = "whatever you want";
对于那些对2020年感兴趣的人:)似乎属性interactable立即被禁用,解决方案是启用它,以便它的文本可以更新...
发布于 2021-03-14 10:06:09
我只需对其进行编码,然后在编辑器中将TMP_InputField对象拖动到脚本中相应的插槽中。
所以,在代码方面,我会有像Milorad Zivanovic展示的脚本。
如果你想要多个,你可以有:myInputs TMP_InputField [] public;
在编辑器中(如上所述,在我的第一句话中),您只需点击加号按钮并将它们拖入其中。或者将它们全部高亮显示,然后一次将它们全部拖入其中。如果您在编辑器中锁定对象来执行此操作(右上角的小锁定图标),请不要忘记解锁它。
要在代码中访问,您可以循环或使用索引。想要得到第一个,你会这样做:{//...在某些方法中
myInputs.text =“某物”;}
PS:我不需要显式设置interactable字段。
如果你喜欢使用HyoJin的活动,HyoJin给出的答案是很棒的,也是最好的。我只是给出了这个答案,这样你就可以有一种额外的方法来完成它,这可能会与你最初的尝试相匹配。
请注意,如果您确实选择了后一种方法,则很容易犯选择相同方法的静态版本的错误(它们被列出两次!)很多次我都犯了这个错误。在大多数情况下,选择最上面的一个(非静态的,又称动态的)!
https://stackoverflow.com/questions/57223275
复制相似问题