Unity3d 在Unity中访问TM Pro InputField文本

Unity3d 在Unity中访问TM Pro InputField文本,unity3d,Unity3d,我已经花了好几个小时在这上面了,似乎什么也做不到,所以非常感谢你的帮助。 我在Unity中创建了一些TextMeshPro UI输入字段,在用户输入内容后,似乎无法访问文本。当它是一个普通的输入字段时,我可以这样做,但在TM Pro版本中不行。我已经创建了一个类型为TMP_InputField的序列化字段,我已经将它连接到了inspector中(还包括使用TMPro名称空间)。 有谁能概述一下将文本转换成变量所需的步骤,因为我被难住了!脚本当前位于不同的游戏对象上。我有一个类型为TMP_Inpu

我已经花了好几个小时在这上面了,似乎什么也做不到,所以非常感谢你的帮助。 我在Unity中创建了一些TextMeshPro UI输入字段,在用户输入内容后,似乎无法访问文本。当它是一个普通的输入字段时,我可以这样做,但在TM Pro版本中不行。我已经创建了一个类型为TMP_InputField的序列化字段,我已经将它连接到了inspector中(还包括使用TMPro名称空间)。
有谁能概述一下将文本转换成变量所需的步骤,因为我被难住了!脚本当前位于不同的游戏对象上。我有一个类型为TMP_InputField的数组,名为theFields,当我调试字段[0]时,该名称似乎工作正常(使用FindObjectsOfType),但当我尝试仅访问特定字段时。text在游戏期间尝试编辑字段时,它会抛出空引用异议。欢迎提供任何教程/支持

您是否尝试在TMP_InputField的Inspector上使用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);
    }
}

然后您可以找到每个事件的日志

仅供参考,创造者有一个

对于那些对2020年感兴趣的人:)
似乎属性Interactiable立即被禁用,解决方案是启用它以便可以更新它的文本…

我只是对其进行编码,然后在编辑器中将TMP\u InputField对象拖动到脚本中相应的插槽中

所以,在代码方面,我会使用米洛拉德·齐瓦诺维奇(Milorad Zivanovic)所展示的脚本

如果您想要多个,您可能有: 公共TMP_输入字段[]myInputs

在编辑器中(如我的第一句话所述),您只需点击加号按钮并将其拖入即可。或者只是高亮显示它们,然后一次将它们全部拖入。如果您在编辑器中锁定对象以执行此操作(右上角的小锁定图标),请不要忘记将其解锁

要在代码中访问,可以循环或使用索引。要获得第一个,请执行以下操作: {//…在某种方法中

myInputs[0]。text=“某物”; }

PS:我不必显式地设置可交互字段

PPS:如果你喜欢使用Unity的活动,那么金孝贤给出的答案是最好的。我只是给出了这个答案,这样你就有了一个额外的方法,可以匹配你最初的尝试

请注意,如果您确实选择了后一种方法,那么很容易犯选择同一方法的静态版本的错误(它们列出了两次!)很多次我都犯了这个错误。在大多数情况下,选择最上面的一个(非静态,也称为动态)!

using TMPro;


public TMP_InputField TMP_IF;

TMP_IF.interactable = true;

TMP_IF.text = "whatever you want";