Как сделать изменение спрайта кнопки по её нажатию?
Мне нужно сделать кнопку по нажатию которой она меняет спрайт а если нажать опять измениться обратно!
Ответы (1 шт):
Чтобы это сделать надо создать 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()


