点击任务按钮 调用OnPushPanel 方法入栈任务面板
却判断 栈为空 又重新new 一个栈
执行不到 panelStack.Count > 0的情况
什么问题啊?
public void PushPanel(UIPanelType panelType)
{
if (panelStack == null)
{
panelStack = new Stack<BasePanel>();
Debug.Log("New栈");
}
Debug.Log("1:"+panelStack.Count);
if (panelStack.Count > 0)
{
BasePanel topPanel = panelStack.Peek();
topPanel.OnPause();
Debug.Log("OnPause");
}
BasePanel panel = GetPanel(panelType);
panel.OnEnter();
panelStack.Push(panel);
Debug.Log(panelStack.Count);
}
每次push都new吗,是不是new调用了两次,那应该是你的这个UI管理器存放在多个位置了,确定你使用的是同一个ui管理器
大哥 我找到问题了 原因是UIManager 继承了MonoBehaviour
但是我还不太懂为啥继承了MonoBehaviour 会导致 每次 调用PushPanel 之前Instance 的时候都会重新new 一个UIManager
继承Mono会有一个BUG:
如果你继承了Mono的类,你就不需要创建它的实例,而且你也不能new创建。虽然编译可以通过,但是执行的时候就会有个一个错误显示在edit的console窗口,这时候不管你new后面是否为空,但是系统显示为空,这就是一个BUG了:我的类继承了你,虽然不能new出来,但是它认为,这不算一个错误啊。所以当获取对象或其值报错为null时,考虑是否继承了monobehaviour类。