Суть проблемы вот в чём. Хочу запилить простенькую анимацию (поворот на 180 по х) для кнопки выключения звука. И когда запускаю и первый раз на неё жму, анимация проигрывается, спрайт меняется, компонент отключается. Словом всё работает. Но далее - вообще никак не реагирует на нажатие. Объясните, пожалуйста, что не так.
Пробовал: останавливать корутины(StopCoroutine(RotateMe(new Vector3(180, 0, 0), 0.5f)))); писал StopAllCoroutines() и в условии, и в теле корутины; разбивал условие на два разных скрипта. Результата очевидно нет...
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SoundButtonOff : MonoBehaviour
{
public GameObject Audio;
public bool SoundOff = false;
public Sprite SpriteSoundOff;
public Sprite SpriteSoundOn;
private void Start()
{
GetComponent<Image>().sprite = SpriteSoundOff;
}
public void OnClickSound()
{
if (!SoundOff)
{
Audio.GetComponent<AudioListener>().enabled = true;
StartCoroutine(RotateMe(new Vector3(180, 0, 0), 0.5f));
GetComponent<Image>().sprite = SpriteSoundOn;
SoundOff = true;
}
else if (SoundOff)
{
Audio.GetComponent<AudioListener>().enabled = false;
StartCoroutine(RotateMe(new Vector3(180, 0, 0), 0.5f));
GetComponent<Image>().sprite = SpriteSoundOff;
SoundOff = false;
}
}
IEnumerator RotateMe(Vector3 byAngles, float inTime)
{
var fromAngle = transform.rotation;
var toAngle = Quaternion.Euler(transform.eulerAngles + byAngles);
for (var t = 0f; t < 1; t += Time.deltaTime / inTime)
{
transform.rotation = Quaternion.Lerp(fromAngle, toAngle, t);
yield return null;
}
}
}