好的,所以我有一个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参数。
答案 0 :(得分:0)
我做了很多调试后发现了这个错误。出于某种原因,我有两个用于OnClick方法的监听器,一旦我删除了其中一个,就解决了问题。出于某种原因,我有一个监听器作为一个组件,并在我的脚本中有另一个调用此方法。哈哈已经太迟了。