Как работает StopCoroutine?

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Как работает StopCoroutine?

Сообщение Good1101 07 ноя 2013, 16:00

Не работает она у меня, или она останавливает толькоWaitForSecond или как там его?)
вот небольшой пример
Синтаксис:
Используется csharp
    public void SktollRight(GUIType type)
    {
        if (rectExstectedFrend.xMin >= 0) return;
        Manager.mono.StopCoroutine("LerpWidth");
        float to = rectExstectedFrend.xMin + panelLerp;
        Manager.mono.StartCoroutine(LerpWidth(to, (a, b) => (a < b)));
        rectExstectedFrend = new Rect(to, rectExstectedFrend.yMin, rectExstectedFrend.width, rectExstectedFrend.height);
    }

    IEnumerator LerpWidth(float to, IsLerp isLerp)
    {
        float x;
        do
        {
            x = Mathf.Lerp(rectFrend.xMin, to, Time.deltaTime * speedLerp);
            rectFrend = new Rect(x, rectFrend.yMin, rectFrend.width, rectFrend.height);
            yield return null;
        }
        while (isLerp((int)System.Math.Round(x,System.MidpointRounding.AwayFromZero), (int)to));
    }
 

суть в том что если запустить 2 корутины которые будет лерпить переменную в разные стороны они зависнут, необходимо отключать все перед стартом, я конечно понимаю что можно сделать булеву переменную для выхода из цикла, но это нарушит всю мою концепцию класса) в конце концов должна же работать и стоп корутина как-то?
Как тут стрелять?
Аватара пользователя
Good1101
Адепт
 
Сообщения: 1100
Зарегистрирован: 17 ноя 2011, 14:07
  • ICQ

Re: Как работает StopCoroutine?

Сообщение Левш@ 07 ноя 2013, 16:09

_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Как работает StopCoroutine?

Сообщение Good1101 07 ноя 2013, 16:21

Левш@ писал(а):http://docs.unity3d.com/Documentation/ScriptReference/MonoBehaviour.StopCoroutine.html

и что дальше? думаете я не смотрел справку?
Как тут стрелять?
Аватара пользователя
Good1101
Адепт
 
Сообщения: 1100
Зарегистрирован: 17 ноя 2011, 14:07
  • ICQ

Re: Как работает StopCoroutine?

Сообщение Good1101 07 ноя 2013, 16:22

типа остановить можно только в том случае если запущена была через строковое имя?
у меня с английским не очень)
Как тут стрелять?
Аватара пользователя
Good1101
Адепт
 
Сообщения: 1100
Зарегистрирован: 17 ноя 2011, 14:07
  • ICQ

Re: Как работает StopCoroutine?

Сообщение seaman 07 ноя 2013, 20:02

типа остановить можно только в том случае если запущена была через строковое имя?

Типа Manager.mono.StopCoroutine останавливает все корутины с именем LerpWidth, в скриптах навешенных на объект, на который невешен скрипт Manager.mono
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Как работает StopCoroutine?

Сообщение Good1101 08 ноя 2013, 09:37

seaman писал(а):
типа остановить можно только в том случае если запущена была через строковое имя?

Типа Manager.mono.StopCoroutine останавливает все корутины с именем LerpWidth, в скриптах навешенных на объект, на который невешен скрипт Manager.mono

то есть если у меня корутина фактически находится в классе не наследнике монобеха то стоп работать никак не будет?
Как тут стрелять?
Аватара пользователя
Good1101
Адепт
 
Сообщения: 1100
Зарегистрирован: 17 ноя 2011, 14:07
  • ICQ


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20