Как через код изменить прозрачность кнопки?

Мне нужно сделать так, что когда игрок входит в определенную область, кнопка изменяет свою прозрачность, но у меня никак не получается, что я только не пробовал, какой код только не вставлял, не понимаю свою проблему

Вот один из примеров, как я пробовал это реализовать, но не работает

public Button KillButton;

    if (collision.tag.Equals("KillRadius"))
        {
            KillButton = GetComponent<Button>();               
            if (Input.GetKey(KeyCode.Space))
            {
                transform.position = enemy.transform.position;
                var KillButton = gameObject.GetComponent<Button>();
                var colors = KillButton.colors;
                colors.normalColor = new Color(255, 255, 255, 250);
                KillButton.colors = colors;

            }
        }

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

Автор решения: Максим Фисман

Из комментариев понял, что вы не знаете как обратиться к кнопке. Первый вариант: создать публичную переменную типа GamaObject, в которую в инспекторе перетащим нашу кнопку:

publiс GameObject myButton;

Назвать можем естественно как хотим переменную. Теперь получаем из нее компонент button следующим образом

Button buttonComponent = myButton.GetComponent<Button>();

Однако это очень муторно и бесполезно: лишняя переменная, лишняя строчка кода, к тому же в нашей кнопке обычно ничего, кроме самого компонента Button нам не нужно, поэтому лучше создадим переменную СРАЗУ типа данных Button:

public Button myButton;

Причем в инспекторе ничего не меняется: просто также перетягиваем кнопку.

Теперь в переменной хранится КОМПОНЕНТ BUTTON ВАШЕЙ КНОПКИ. Цвет можем поменять следующим образом:

Color color = new Color(255, 255, 255, 250);
myButton.colors.normalColor = color;

Не нужно создавать лишние переменные такие как var killButton, вы напрямую пишите кнопка.цвета.нормальныйЦвет = мойЦвет

Можно естественно не оборачивать color в переменную и указать напрямую, как сделали вы:

myButton.colors.normalColor = color;

Если мой ответ вам помог, примите его, поставив галочку, если у вас остались вопросы - задавайте их в комментариях:)

Не нужно это делать в методе OnTriggerStay, потому что он вызывается каждый кадр, когда есть контакт. Вызывайте в OnTriggerEnter

Попробую угадать, вы случайно не Among Us делаете?

→ Ссылка