проблемы с доходностью в единстве

У меня есть функция для создания простой анимации меню в 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<UIButton>();
            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<UIButton>();
        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");
}

И эта функция вызывается из другой функции, назначенной событию нажатия кнопки (с использованием NGUI).

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

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


person rockpin games    schedule 07.02.2013    source источник
comment
Когда он падает, как именно он это делает? Вы получаете какие-либо исключения?   -  person svick    schedule 07.02.2013


Ответы (1)


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

person Tim    schedule 23.07.2013