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

Мне нужно получить текст, находящийся внутри кнопки в 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.

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


Ответы (1 шт):

Автор решения: reduct

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

var child = panel.transform.GetChild(0);
→ Ссылка