#unity3d
#unity3d
Вопрос:
Я хочу получить доступ к свойствам кнопки, таким как .interactable = false;
кнопки, которая находится внутри игрового объекта. Я хочу получить доступ к кнопке через GameObject. Я попробовал приведенный ниже метод, но смог получить доступ только к нескольким свойствам, таким как .SetActive
.
gameObjectA.transform.GetChild(0).gameObject.SetActive(false);
где gameObjectA — это мой игровой объект, а getChild(0) — моя кнопка
Я хочу получить доступ к другим свойствам, таким как .Color
, .Interactable
и т.д.
Пожалуйста, помогите. Заранее спасибо
Комментарии:
1. Вы пытаетесь подключить контроллер кнопки к дочернему объекту?
2. Нет. Мой дочерний объект — это кнопка. Что я хочу, так это в основном выполнить следующие шаги при получении свойств кнопки: получить доступ к GameObject -> затем получить доступ к кнопке, которая является дочерним элементом GameObject -> и, наконец, к свойствам этой кнопки. Я надеюсь, что это проясняет. Я новичок в Unity, поэтому извините, если это звучит запутанно.
3. docs.unity3d.com/ScriptReference/GameObject.GetComponent.html .. пожалуйста, обязательно изучите основы, прежде чем приступать к реализации собственного приложения 🙂 .. см., например learn.unity.com/tutorial/getcomponent
Ответ №1:
Попробуйте использовать GetComponentInChildren
, это вернет первый экземпляр кнопки, найденный в игровом объекте или одном из его дочерних элементов (рекурсивный)
Button childbutton = GetComponentInChildren<Button>();
childbutton.interactable = false;
Если у вас есть несколько дочерних элементов с кнопками, вы можете использовать gameObject.transform.GetChild()
тот, который вы уже использовали, с обычным GetComponent
(замените x на дочерний индекс)
Button childbutton = gameObjectA.transform.GetChild(x).GetComponent<Button>();
Вы также можете назначать и читать теги или имена, если вы постоянно меняете и добавляете кнопки и не хотите повторно изменять свой код