2016-08-11 6 views
0

Недавно я создавал игру, и я создавал меню. Вначале игрок открывает меню и вводит имя в текстовое поле пользовательского интерфейса, которое я преобразую в строку, так что игрок может называться этим именем во всей сюжетной линии.Входное значение, преобразованное в строку

Я пришел через другой скрипт на этом сайте:

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() (на активы/скрипты/GUIFieldTest.cs: 13)

Я понимаю, что эта ошибка означает, что ничего не назначено, и я понимаю, как исправить исключение NullReferenceException. Я могу запустить игру, однако игра зависает, и текстовое поле не доступно для кликов. Вы не можете вводить текст.

Я знаю, что это очень простой вопрос, но это было бы здорово для объяснения.

+1

Я не очень хорошо знаком с Unity, но я знаю, что 'NullReferenceException' означает, что вы пытаетесь получить доступ к члену на объекте, который является' Null' –

ответ

0

var input = gameObject.GetComponent<InputField>() должен быть

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

При использовании gameObject.GetComponent, это будет только найти компоненты на GameObject сценарий присоединен.

Я предполагаю, что ваш объект GameOBject InputField является переменной playerName.

Если это не так, сделайте var input = GameObject.Find("YourInputFieldGameOBject").GetComponent<InputField>().

+1

Большое спасибо @Programmer, он отлично работает, и игра была ун-заморожен! –

Смежные вопросы