Как правильно ссылаться на компонент Text UI в скрипте - PullRequest
0 голосов
/ 05 ноября 2019

Работа над знакомством с C # и развитием Unity. Сегодня я работаю над получением ссылки на объект Text UI в моем скрипте. Следующий код, приведенный ниже, приводит к этой ошибке:

NullReferenceException: Object reference not set to an instance of an object
handle.Awake () (at Assets/handle.cs:20)

Сценарий выглядит следующим образом:

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

public class handle : MonoBehaviour
{

    public Text myText;

    // Start is called before the first frame update
    void Start()
    {

    }

    void Awake()
    {
        myText.text = "@organickoala718" ;
    }

    // Update is called once per frame
    void Update()
    {

    }
}

Что необходимо улучшить, чтобы правильно получить ссылку на элемент Text UI?

Ответы [ 3 ]

1 голос
/ 05 ноября 2019

В целом: так же, как и с любым другим Компонентом.

Либо обратитесь к нему через Инспектора, либо используйте GetComponent (Учебное пособие) или один из его вариантов.


Так что, если этот Text Компонент присоединен к тому же GameObject, что и ваш скрипт, тогда вы можете использовать GetComponent (API), чтобы получить ссылку на время выполнения

private void Awake ()
{
    myText = GetComponent<Text>();
    myText.text = "@organickoala718" ;
}

Также оформить заказ Управление объектами GameObject с компонентами


Кстати, вы должны полностью удалить пустые методы Start и Update. Они вызываются Unity Engine как сообщения, если они существуют, поэтому они не должны существовать и вызывают только ненужные издержки.

1 голос
/ 05 ноября 2019

Вам нужно либо установить значение myText вашего экземпляра handle из другого скрипта, либо установить его в окне инспектора редактора Unity, когда вы выбрали GameObject, в который добавлен компонент handle.

0 голосов
/ 06 ноября 2019

Вам нужно перетащить объект, на который вы ссылаетесь, из редактора Unity, в сцене, в сам скрипт. Сначала прикрепите созданный вами скрипт к GameObject в Unity Scene. Затем перетащите компонент «текст» в скрипт, который вы недавно прикрепили к GameObject

. Это решит вашу проблему.


Другой подход - объявить

public GameObject UITextElement;

Вместо публичного текста, как вы это сделали. Сделайте то же самое, что я написал ранее, и в сценарии напишите:

UITextElement.GetComponent (). Text = "Напишите здесь свой текст!";

...