Получить дочерний элемент UI в Unity?

263
26 декабря 2017, 14:17

Как у canvas в unity через скрипт получить его дочерний button, чтобы потом иметь возможность обращаться к нему и проверять на нажатия ?
Пробовал так:

GUIElement Button;
 GUIElement[] ge= gameObject.GetComponents<GUIElement>();
    for (int i = 0; i < ge.Length; i++)
    {
        if (ge[i].tag == "button1")
        {
            Button = ge[i];
        }
    }

но понятно, что такой вариант не подходит по здравому смыслу. Да, я знаю, что в самом редакторе есть встроенный "редактор событий" - по типу OnClick - и можно прописать цепочку условий, но там нельзя подписать на свой обработчик событий, поэтому и спрашиваю как обратиться к самой кнопке как к дочернему элементу.

Answer 1

Кажется нужно всего лишь вот это: GetComponentInChildren

private Button button;
void Start( ) {
    button = gameObject.GetComponentInChildren<Button>();
    if(button)
         Debug.Log(test.interactable);
    else
        Debug.Log(":'-(");
}

Еще варианты, когда известна иерархия объекта. Например использовать GetChild

Например есть структура

Canvas
  GameObject 
    GameObject
      Button
      Slider
      Image

Скрипт например будет висеть на CanvasGameObject. Тогда:

void Start () {     
    var button = gameObject.transform.GetChild(0).transform.GetChild(0).GetComponent<Button>();     
    Debug.Log(button.interactable);
}


Также если известна структура можно использовать Find:

void Start () {
    var button = GameObject.Find("GameObject/Button").GetComponent<Button>();           
    Debug.Log(button.interactable);        
}
READ ALSO
TcpClient hook close connect

TcpClient hook close connect

Подскажите есть ли обработчик closeconnect TcpClient?Нужен для вывода информации о дисконнекте

245
C# Доступ к строке из ресурса культуры

C# Доступ к строке из ресурса культуры

В C# (windows forms) добавил новый язык к форме, изменил текст компонентов и тд, создался файл ресурсов для языка который добавил, добавил свою строку...

214
Скачивание файла с проверкой наличия и хеша

Скачивание файла с проверкой наличия и хеша

Использую библиотеку CefSharpСтолкнулась с проблемой обновления файлов

266
Программно задать разрешения на папку [требует правки]

Программно задать разрешения на папку [требует правки]

Нашел такой пример, но для работы данного кода надо добавить ссылку на using ADSSECURITYLib, но нигде я не нашел где взять эту ссылкуADsSecurity

221