最近我一直在制作游戏,我一直在创建一个菜单。 在开始时,播放器打开菜单并在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);
}
}
我已经调整了这段代码,所以我可以将文本字段的预制件包含为GameObject,但是我收到了一条错误说:
NullReferenceException:未将对象引用设置为的实例 对象GUIFieldTest.Start()(在Assets / Scripts / GUIFieldTest.cs:13)
我理解这个错误意味着没有分配任何东西,我理解如何修复NullReferenceException。我可以运行游戏,但游戏冻结,文本字段无法点击。你不能输入任何文字。
我知道这是一个非常简单的问题,但解释会很棒。
答案 0 :(得分:0)
var input = gameObject.GetComponent<InputField>()
应该是
var input = playerName.GetComponent<InputField>().
当您使用gameObject.GetComponent
时,它只会在脚本附加到的GameObject上找到组件。
我假设您的InputField
GameOBject是playerName
变量。
如果不是这样,请执行var input = GameObject.Find("YourInputFieldGameOBject").GetComponent<InputField>()
。