Как по клику изменять спрайт по кругу итерируя массив?
У меня есть 6 спрайтов ( land; land_(brake1); land_(brake2); land_(brake3); и т.д.) Надо чтобы при клике спрайт land поменялся на land_(brake1). Если ещё раз кликнуть, то из land_(brake1) в land_(brake2) и т.д. Помогите пожалуйста, буду очень благодарен!
Ответы (2 шт):
Автор решения: Slavik
→ Ссылка
Sprite[] m_sprites;
int m_currentSpriteIndex;
SpriteRenderer m_spriteRenderer;
void OnClick()
{
IncreaseIndex();
UpdateSprite();
}
void IncreaseIndex()
{
m_currentSpriteIndex = UtilityArray.GetNextArrayElement(
m_currentSpriteIndex, m_sprites.Length);
}
void UpdateSprite()
{
m_spriteRenderer.sprite = m_sprites[m_currentSpriteIndex];
}
public static class UtilityArray
{
public static int GetNextArrayElement(int current, int arrayLength)
{
return
(++current < arrayLength)
? current : 0;
}
}
Автор решения: Andrew
→ Ссылка
Вот это должно сработать
private int _currSpriteIndex = 0;
private Sprite[] _sprites;
private SpriteRenderer _spriteRenderer;
void OnClick() {
UpdateSprite();
}
void UpdateSprite() {
_renderer.sprite = _sprites[_currSpriteIndex++ % _sprites.Length];
}