产量统一的问题

时间:2013-02-07 13:07:23

标签: c# unity3d coroutine yield-return ngui

我有一个在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");
}

这个函数quets从另一个被分配给按钮onclick事件(使用NGUI)克服。

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

随着产量未被注释,应用程序似乎在第一个崩溃,之后不再出现日志,但即使我评论两个产量并在最后添加一个,我也没有动画,按钮变得无法响应。在最后一种情况下,打印4。这只在获取游戏并返回菜单后才会发生,而不是第一次执行菜单。 我也调试了动画时间,不到一秒钟,所以这是正确的。 我真的不知道在哪里寻找错误。想知道在哪里找?

1 个答案:

答案 0 :(得分:0)

我和NGUI的OnClick和协同程序有同样的问题,因为OnClick按钮在调用StartCoroutine后被设置为非活动状态。这导致协程的迭代被消除,因为它是管理协程的OnClick对象。不确定这是否是同样的问题。

相关问题