проблемы с выходом в единице

У меня есть функция сделать простую анимацию меню в NGUI. Кажется, он отлично работает, но когда я иду играть, а затем возвращаюсь в меню, функция работает неправильно.

IEnumerator MenuTransition (GameObject panelOut, GameObject panelIn) {
    foreach (Transform child in panelOut.transform)
    {
        if(child.gameObject.collider != null)
        {
            child.gameObject.collider.enabled = false;
            UIButton [] buttons = child.GetComponents();
            foreach(UIButton b in buttons) b.UpdateColor(true, true);
        }
        child.gameObject.animation.Play("MenuTransitionOff");
    }
    Debug.Log("time: "+animTime);
    //yield return new WaitForSeconds(animTime);
    Debug.Log("ini");
    foreach (Transform child in panelIn.transform)
    {       
        UIButton [] buttons = child.GetComponents();
        foreach(UIButton b in buttons) b.UpdateColor(true, true);
        child.gameObject.animation.Play("MenuTransitionOn");
    }
    //yield return new WaitForSeconds(animTime);
    foreach (Transform child in panelIn.transform)
    {           
        if(child.gameObject.collider != null)
        {
            child.gameObject.collider.enabled = true;
        }
    }
    Debug.Log("3");
    yield return null;
    Debug.Log("4");
}

И эта функция quets clled из другой, которая назначена кнопке onclick event (используя NGUI).

void OnMainMatch() {
    StartCoroutine(MenuTransition(mainPanel, matchPanel));
}

Когда доходность раскоментирована, приложение, похоже, разбивается на первый, и после него больше не появляются журналы, но даже если я прокомментирую два выхода и добавлю их в конец, я не получаю анимацию, и кнопки становятся нерешительными. В этом последнем случае 4 печатается. Это происходит только после запуска игры и возврата в меню, а не при первом запуске меню. Я также отлаживал время анимации, и это меньше секунды, так что это правильно. Я действительно не знаю, где искать ошибку. Любая идея о том, где искать?

0
nl ja de
Когда он падает, как именно он это делает? Вы получаете какое-либо исключение?
добавлено автор svick, источник

1 ответы

У меня была такая же проблема с OnClick NGUI и сопрограммами, и она появилась потому, что кнопка OnClick была отключена после вызова StartCoroutine. Это приводит к уничтожению итерации сопрограммы, потому что это объект OnClick, который управляет сопрограммой. Не уверен, что это одна и та же проблема.

0
добавлено
unity3d_ru
unity3d_ru
3 147 участник(ов)

Общение о Unity3D, GameDev. Оффтоп не приветствуется. Рекомендуем отключить уведомления. Also you can speak in English. Новости: @unity_news Оффтоп: @gamedevtalk Остальное: t.me/unity3d_ru/156562

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot