Здравствуйте. Мигание реализовал через 2 кнопки: 1 темная кнопка, 2 светлая кнопка.
Первая SetActive(false), вторая SetActive(true) и так чередуется...
После
StopCoroutine()
останавливается мигание и снова продолжается.
Если передать название функции как строку
StopCoroutine("myFunc")
, то всё работает, но благодаря этому мне придется дублировать функции: "myFunc2", "myFunc3"... потому что кнопок больше 2-х, не хочется дублировать.
Как остановить мигание?
Как написать универсальную функцию для корутинов?
// class Btns
static public Btns S;
private IEnumerator _coroutine;
public void startFI () {
_coroutine = BlinkindRun (btn1, btn2);
// 1. пробовал _coroutine = StartCoroutine ( BlinkindRun (btn1, btn2) );
StartCoroutine (_coroutine);
}
public void stopFI () {
// 2. пробовал _coroutine = BlinkindRun (btn1, btn2);
// 3. пробовал StopCoroutine ("_coroutine");
// 4. пробовал StopCoroutine ("BlinkindRun");
StopCoroutine (_coroutine);
}
private IEnumerator BlinkindRun (GameObject offGO, GameObject onGO) {
while (true) {
blinkBtn(offGO, onGO);
yield return new WaitForSeconds (1f);
blinkBtn(onGO, offGO);
yield return new WaitForSeconds (1f);
}
}
public void blinkBtn (GameObject offGO, GameObject onGO, bool blinkGO = false) {
offGO.SetActive (false);
onGO.SetActive (true);
}
// class B
private void Awake () {
UIButton1.onClick.AddListener (onStep1Touch);
UIButton2.onClick.AddListener (onStep2Touch);
}
private void onStep1Touch () {
Btns.S.startFI ();
}
private void onStep2Touch () {
Btns.S.stopFI ();
}