Всем привет. Есть задача, сделать кнопку с картинкой и чтобы при наведении на эту кнопку менялась картинка.
В голову пришло только одно решение:
Создал кнопку ( Button )
Создал картинку ( Image ) как дочерний объект в Button
При наведении на кнопку навесил событие.
И вся проблема заключается в том, чтобы у дочернего объекта поменять спрайт. Пытаюсь поменять спрайт следующим образом:
if (this.transform.Find ("Image")) {
Debug.Log ("OnHover");
Image bImg = this.GetComponent<Image>();
bImg.sprite = ButtonImageHover;
}
Но почему то спрайт не меняется, хотя в консоли при наведении на кнопку пробегает "OnHover" ...
VeryBadUser, тогда я бы сделал иначе.
операция Find может уменьшить производительность. А еще могут быть проблемы если на сцене несколько объектов по имени "Image". И тогда не факт что это будет дочерний объект.
GameObject.Find is useful for automatically connecting references to other objects at load time; for example, inside MonoBehaviour.Awake or MonoBehaviour.Start. For performance reasons, it is recommended to not use this function every frame. A common pattern is to assign a GameObject to a variable inside MonoBehaviour.Start, and use the variable in MonoBehaviour.Update.
public class MyClass
{
public Image bImg;// Можно назначить через инспектор.
void Awake()
{
bImg = transform.Find("/Image").GetComponent<Image>();// Или найти среди дочерних объектов.
}
void F()
{
if (bImg != null) {
Debug.Log ("OnHover");
bImg.sprite = ButtonImageHover;
}
}
}
Это делается вообще без кода.
Используй элемент Button и выставь все что нужно в настройках инспектора
Спасибо Valera Kvip. Воспользовался вашим решением:
if (this.transform.Find ("Image")) {
Debug.Log ("OnHover");
Image bImg = this.transform.Find ("Image").GetComponent<Image>();
bImg.sprite = ButtonImageHover;
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники