停用UI面板的方法有哪些影响我所选面板的比例?

时间:2018-01-04 19:26:18

标签: c# unity3d

好的,所以我有一个Canvas对象,它有一堆Panel就是它的子级。基本上每次我想打开一个新面板时,我都会检查是否有一个已打开,如果有的话我想要关闭它,否则只需转到下一个子对象。由于某种原因,它只是挂起我的项目。没有错误被抛出,也没有任何反应。我已经将所有内容都设置为我的公共变量,并且我已经能够注释掉这个方法调用,然后其余的代码工作正常,但是,我的面板都没有关闭,因为该方法是为我做的那个。这里有什么不对的,我没有看到。这种方法以前工作过,我从未接触过它。每个面板都有它的动画,这就是我将它们与我的Canvas对象下的所有其他RectTransforms区分开来的。

public void CheckIfActiveBeforeClosing(GameObject obj)
{
    RectTransform[] children = obj.GetComponentsInChildren<RectTransform>();
    foreach (RectTransform child in children)
    {
        if (!child.gameObject.activeInHierarchy)
        {
            continue;
        }
        else
        {
            if (child.gameObject.GetComponent<Animator>() != null)
            {
                taskAnimController.ClosePanel(child.gameObject.GetComponent<Animator>());
            }
        }
    }
}

退出此方法后,我调用OpenPanel函数。出于某种原因,当包括上述方法时,我打开的面板的比例变为0,0,0。一旦我选择了另一个面板打开,比例变化恢复正常,新选择的面板会改变其比例,依此类推。但是,我的代码中没有任何地方可以搞乱对象的比例。 OpenPanel调用也不会激活我的Panel。它只是说它将对象设置为活动状态并更改动画bool参数。

1 个答案:

答案 0 :(得分:0)

我做了很多调试后发现了这个错误。出于某种原因,我有两个用于OnClick方法的监听器,一旦我删除了其中一个,就解决了问题。出于某种原因,我有一个监听器作为一个组件,并在我的脚本中有另一个调用此方法。哈哈已经太迟了。