输入值转换为字符串

Input Value Converted To String

最近我一直在制作游戏,并且一直在制作菜单。 一开始,玩家打开菜单并在 UI 文本字段中输入一个名字,我会将其转换为字符串,因此玩家可能会在整个故事情节中被称为该名字。

我在这个网站上看到了另一个脚本:

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

public class GUIFieldTest : MonoBehaviour {

    public GameObject playerName;

    public void Start ()
    {
        var input = gameObject.GetComponent<InputField>();
        var se = new InputField.SubmitEvent();
        se.AddListener(SubmitName);
        input.onEndEdit.AddListener(SubmitName);

        //or simply use the line below,
        //input.onEndEdit = se;  // This also works
    }

    private void SubmitName(string arg0)
    {
        Debug.Log(arg0);
    }
}

我已经调整了这段代码,所以我可以将文本字段的预制件作为游戏对象包含在内,但是我收到了一条错误消息:

NullReferenceException: Object reference not set to an instance of an object GUIFieldTest.Start () (at Assets/Scripts/GUIFieldTest.cs:13)

我知道这个错误意味着没有分配任何东西,我知道如何修复 NullReferenceException。我能够 运行 游戏,但是游戏冻结并且文本字段不可点击。您不能输入任何文字。

我知道这是一个非常简单的问题,但最好能有一个解释。

var input = gameObject.GetComponent<InputField>() 应该是

var input = playerName.GetComponent<InputField>().

当您使用 gameObject.GetComponent 时,它只会在脚本附加到的 GameObject 上找到组件。

我假设您的 InputField GameOBject 是 playerName 变量。

如果这不是真的 var input = GameObject.Find("YourInputFieldGameOBject").GetComponent<InputField>().