Ошибка при попытке получить текст Button в Unity

Рейтинг: 0Ответов: 1Опубликовано: 24.03.2023

Мне нужно получить текст, находящийся внутри кнопки в Unity. Движок выдает NullReferenceException.Что я делаю не так? Вот код метода целиком

public void BuyThing(GameObject panel, Thing thing)
{
    Button button = panel.GetComponent<Button>();
    string costText = button.GetComponentInChildren<Text>().text;
    
    var child = panel.transform.GetChild(2);
    string incomeText = child.GetComponent<TMPro.TextMeshProUGUI>().text;

    Debug.Log(incomeText);
    Debug.Log(costText);
}

GetComponent достает кнопку, я проверял. Ошибка именно в следующей строке. Я пробовал вместо Text - TextMeshProUGUI, тоже не помогает.

Вот иерархия в Unity.

введите сюда описание изображения

Ответы

▲ 0

transform.GetChild(int) возвращает один из дочерних объектов родителя по индексу. Как и в массиве, индекс начинается с нуля. По вашему второму скриншоту видно, что у кнопки есть только один дочерний объект, соответственно, чтобы его получить, в вашем случае нужно заменить индекс "2" на "0".

var child = panel.transform.GetChild(0);