unity InputField保存文本错误nullreference

时间:2019-09-27 20:55:22

标签: unity3d text input-field

解决方案
问题是Text Mesh Pro InputField和本机InputField之间的区别。我使用的TMP在引用它时似乎有所不同。我恢复为原生Inputfield,它立即起作用。

原始错误
我正在尝试将输入字段中的文本保存到一个变量中,以供跨场景使用。目前,当我得到一个空引用时,我什至无法获取它来单独保存文本。香港专业教育学院尝试了多种解决方案,没有任何工作。使用与YouTube和其他在线来源完全相同的示例。

我也尝试过使用PlayerPrefs.SetString / GetString却没有真正的运气。

当前设置如下。

  1. 下面的脚本收集文本并将其保存到公共变量。 脚本附加到空的GameObject
  2. InputText与inputField的文本部分关联 按开始,我得到空引用。
  3. “开始”按钮只需调用“ SaveAddress()”函数

错误消息

NullReferenceException: Object reference not set to an instance of an object
SaveTipBotAddress.SaveAddress () (at Assets/Scripts/SaveTipBotAddress.cs:25)

文本脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class SaveTipBotAddress : MonoBehaviour
{

    public string ilpAddress;
    public GameObject inputText;

    public void SaveAddress()

    {

        ilpAddress = inputText.GetComponent<Text>().text;
    }

}

InputField Text referenced in Script

Start Button Calls SaveAddress Script

2 个答案:

答案 0 :(得分:0)

我看到ILP_TextField是InputField内部的Text对象。为了从InputField获取文本,您需要先获取该InputField的引用,然后才能使用InputField.text属性获取文本。

在检查器上,您需要将“ Tex Area”对象设置为“ Input Text Area”字段。

您的脚本将是这样:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class SaveTipBotAddress : MonoBehaviour
{

    public string ilpAddress;
    //public GameObject inputText;

    public InputField inputTextArea;

    public void SaveAddress()    
    {
        ilpAddress = inputTextArea.text;
    }    
}

答案 1 :(得分:0)

我弄清楚了这个问题。所有答案都很有帮助,但主要问题是我正在使用InputField-TextMeshPro。我不确定在其中调用字段和本机InputField之间的区别,但是当我使用本机InputField时,它立即起作用。

对不起,谢谢。