Size: a a a

2021 June 22

UU

Unknown Unknown in unity3d.ru
🙏
источник

CF

Chak Franklin in unity3d.ru
Йеп, good luck
источник

UU

Unknown Unknown in unity3d.ru
😉😉
источник

VV

Vlad Vasylets in unity3d.ru
приветик скажите почему когда я нажимаю А корутина не стопается?
 private void Update()
   {
       if (Input.GetKeyDown(KeyCode.S))
       {
           StartCoroutine(ChangeCoilor());
           
           
       }
       if (Input.GetKeyDown(KeyCode.A))
       {
           StopCoroutine(ChangeCoilor());
       }
   }

   IEnumerator ChangeCoilor ()
   {
       gameObject.GetComponent<Renderer>().material.color = Color.red;
       yield return new WaitForSeconds(1f);
       gameObject.GetComponent<Renderer>().material.color = Color.white;
       yield return new WaitForSeconds(1f);
       StartCoroutine(ChangeCoilor());
   }
источник

n

neFormal in unity3d.ru
start coroutine возвращает coroutine
его надо передать в StopCoroutine
источник

AP

Alexander P in unity3d.ru
Потому что останавливать надо Coroutine, а не IEnumerator
источник

VV

Vlad Vasylets in unity3d.ru
Неееее простите так и не понеял, стоп ал корутинс работает, а вот остановка конкретной нет(
источник

А

Алексей in unity3d.ru
Потому что стопать нужно конкретную корутину по ссылке на неё, кажется
источник

А

Алексей in unity3d.ru
Попробуйте создать поле корутины, в нем её начинать и стопать
источник

А

Алексей in unity3d.ru
Должно работать
источник

AP

Alexander P in unity3d.ru
Потому что StopAllCoroutines останавливает все корутины монобеха и не нуждается в ссылке на конкретный экземпляр.
источник

VV

Vlad Vasylets in unity3d.ru
ну да, просто я думал как стартанул корутину по названию так и остановить можно, а че то не то -_-
источник

AP

Alexander P in unity3d.ru
Нельзя, ты вернёшь новый экземпляр IEnumerator.
источник

VV

Vlad Vasylets in unity3d.ru
опа начинаю понимать спасибо
источник

к

клоунада2007 in unity3d.ru
Привет всем
источник

P

Phantom in unity3d.ru
Ты тут создаешь новый, и останавливаешь его
источник

VV

Vlad Vasylets in unity3d.ru
я по сути решил проблему так
private void Update()
   {
       if (Input.GetKeyDown(KeyCode.S))
       {
           truCor = true;
           StartCoroutine(ChangeCoilor());
         



       }
       if (Input.GetKeyDown(KeyCode.A))
           truCor = false;
   }

   IEnumerator ChangeCoilor ()
   {
       gameObject.GetComponent<Renderer>().material.color = Color.red;
       yield return new WaitForSeconds(1f);
       gameObject.GetComponent<Renderer>().material.color = Color.white;
       yield return new WaitForSeconds(1f);
       if (truCor)
           StartCoroutine(ChangeCoilor());
       if (!truCor)
           StopCoroutine(ChangeCoilor());
но все же интересно как остановить корутину по ссылке есть гайдик какой, а то я ничего не нашел(

Всем спасибо за хелпу
источник

P

Phantom in unity3d.ru
Ты все еще не правильно сделал
источник

P

Phantom in unity3d.ru
var myCoroutine = MyCoroutine();
StartCoroutine(myCoroutine);
...
...
...
StopCoroutine(myCoroutine);
источник

VV

Vlad Vasylets in unity3d.ru
сударь вы гений, я уже натыкался на такое но не смог понять, а у вас вышло мне все растолковать спасибоXD
источник