Пятница, 15 Ноября 2024, 20:44

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Корутины, можна ли так делать?
vova1227Дата: Среда, 05 Мая 2021, 16:12 | Сообщение # 1
был не раз
Сейчас нет на сайте
Я заменил Update корутиной с постоянным перезапуском 0.5 сек
Можна ли так делать и правельно ли это?
Я не уверен в yield break; По моему мнению он останавливает корутину, но зачем тогда StopCoroutine() нужен?
У меня перезапускается одна и та же корутина или плодятся новые экземпляры каждые 05 сек и существуют дальше в памяти?
Перечитал много разных статей, но конкретного ответа найти не смог.

Код

void Start
{
StartCoroutine(Man5Updator());
}

IEnumerator Man5Updator()
    {
        Man5Time = CubeResources.GetComponent<MyTimer>().GameMin;
        //STANDART
        if (transform.position != targetPos)
        {
            Man5Anim.SetBool("Walk", true);
            Man5Navi.SetDestination(targetPos);
        }
        else
        {
            Man5Anim.SetBool("Walk", false);
        }

yield return new WaitForSeconds(0.5f);
        RepCourMan5();
       yield break;
    }
    public void RepCourMan5()
    {
        StartCoroutine(Man5Updator());
    }
drcrackДата: Четверг, 06 Мая 2021, 00:16 | Сообщение # 2
старожил
Сейчас нет на сайте
ты постоянно плодишь новые корутины, засоряя память, и я не понимаю зачем, если можно сделать так:

Код
void Start
{
    StartCoroutine(Man5Updator(CubeResources.GetComponent<MyTimer>().GameMin));
}

IEnumerator Man5Updator(Animator Man5Anim)
{

  var wait = new WaitForSeconds(0.5f);;

  while(true) {
  
    if (transform.position != targetPos)
    {
      Man5Anim.SetBool("Walk", true);
      Man5Navi.SetDestination(targetPos);
    }
    else
    {
      Man5Anim.SetBool("Walk", false);
     }
   
    yield return wait;
  }
    
}


Сообщение отредактировал drcrack - Четверг, 06 Мая 2021, 00:17
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг