Как по клику изменять спрайт по кругу итерируя массив?

У меня есть 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];
}
→ Ссылка