Как сделать изменение спрайта кнопки по её нажатию?

Мне нужно сделать кнопку по нажатию которой она меняет спрайт а если нажать опять измениться обратно!


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

Автор решения: ZZZ

Чтобы это сделать надо создать Canvas. Нажми два раза на Canvas и тогда будет видна полная область канваса. В области канваса будет находится все связанное с UI это кнопки, ползунки, текст и так далее.

введите сюда описание изображения

После этого в Canvas нужно добавить Button(находится также в вкладке UI). Появится кнопка переместите и увеличите ее как вам надо. Если хотите изменить текст то в Button есть компонент Text. В этом компоненте вы сможете изменить текст кнопкивведите сюда описание изображения

Создаем спрайтвведите сюда описание изображения

И создаем скрипт и пишем следующий код:

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
public Sprite[] S;
private int pos;
public SpriteRenderer SR;

public void Click()
{
    pos++;
}

private void Update()
{
    if (pos >= S.Length)
        pos = 0;
    else
        SR.sprite = S[pos];
}
}

Объяснение кода:

S - это массив с нашими двумя спрайтами

SR - это SpriteRenderer это компонент у спрайта

pos - это переменная указывает на каком спрайте по счету находится наш объект

Когда на кнопку нажали то выполняется функция Click() и она добавляет 1 к pos. В фeнкции Update() мы в зависимости от позиции берем из массива нужный нам спрайт и если спрайты закончились то мы возвращаемся к начальной картинке. Данный скрипт можно использовать не только на двух картинках ,но и на больших количествах картинок.

После чего добавляем скрипт куда хотим(желательно в Main Camera). В скрипте указываем наши картинки и добавляем SpriteRenderer. Затем заходим в Button и в параметре void Click() добавляем наш объект куда мы положили скрипт и выбираем скрипт а в нем функцию Click()введите сюда описание изображения

Результат: введите сюда описание изображения

→ Ссылка