在统一输入字段中设置文本

时间:2016-06-27 16:32:04

标签: c# unity3d

用户注册inputfield后,应自动填写当前存储在用户首选项中的电子邮件地址。我的工作正常。

我的问题是将此变量输出到主页面的输入字段中。如果有人以前管理过,那么任何帮助都会很棒。每次我尝试获取inputfield的文本时,都会返回null ref。

    GameObject inputFieldGo = GameObject.Find("email");
    InputField inputFieldCo = inputFieldGo.GetComponent<InputField>();
    inputFieldCo.text = "hello";

NullReferenceException:未将对象引用设置为对象的实例 firstRun.Start()(在Assets / Scripts / init / firstRun.cs:31)

2 个答案:

答案 0 :(得分:2)

检查命名空间

您需要确保明确包含用于处理UI元素的相应Unity命名空间:

using Unity.UI;

确保您正在定位适当的元素

之后,您需要确保您的GameObject.Find()方法正确定位您的InputField元素(即仔细检查以确保标识符正确)。

确保没有拼写错误(即&#34; email_text&#34;而不是&#34;电子邮件&#34;等),因为这会导致您的方法返回null,因此无效尝试设置它的属性时引用异常。

使用调试器

如果您仍然遇到问题,请考虑记录每个步骤以确定返回null的位置,然后考虑可能出错的地方。没有正确实例化的东西?是否有命名错误?

答案 1 :(得分:0)

搞定了。做了以下内容。

    GameObject email_go = GameObject.Find("email_input");
    Debug.Log(email_go);
    InputField email_in = email_go.GetComponent<InputField>();
    Debug.Log(email_in);
    Debug.Log(email_in.text);
    email_in.text = PlayerPrefs.GetString("email");
    Debug.Log(email_in.text);

感谢@RionWilliams