输入值转换为字符串
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>()
.
最近我一直在制作游戏,并且一直在制作菜单。 一开始,玩家打开菜单并在 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>()
.