Я хотел бы знать, виден ли GameObject, который является элементом пользовательского интерфейса (например, кнопкой) на холсте экранного пространства, или нет.
Проверять activeself недостаточно, потому что, если элемент активен, но имеет неактивного родителя, он не будет виден.
Я гуглил уже час, но безуспешно. Должен ли я проверить, все ли его родители активны? Это может стоить дорого...
Можете ли вы любезно помочь?
Спасибо





Вы правы, проверка того, все ли родители GameObject активны, определенно сработает, но это может оказаться немного затратно. В любом случае, есть гораздо лучший вариант.
GameObject.activeSelf показывает, активен ли GameObject сам, который возвращает true, даже если какой-либо из его родителей отключен.
GameObject.activeInHierarchy показывает, активен ли GameObject в иерархии, поэтому возвращает true, если какой-либо из его родителей отключен. Это то, что вам нужно.
Вот Parent это inactive и GameObject это active. GameObject.activeSelf — это true, а GameObject.activeInHierarchy — это false. (хотя это нарушает правила именования)
Кроме того, обратите внимание, что ни GameObject существо UI, ни Canvas нахождение в Screen space не имеют значения.