protected virtual void InstantShowPanel(UIPanelType type, DataProvider data = null) { Log("InstantShowPanel " + type); if (m_panels.ContainsKey(type)) { var panel = m_panels[type]; panel.gameObject.SetActive(true); if (m_deactivatedPanels.Contains(type)) { m_deactivatedPanels.Remove(type); } if (panel.PanelState == UIPanelState.Deactivate || panel.PanelState == UIPanelState.Show) { if (panel.PanelState == UIPanelState.Deactivate) { panel.PanelState = UIPanelState.Show; } panel.UpdateData(data); Log("Just UpdateData " + panel.PanelType); } else { panel.ShowData(data); panel.UpdateData(data); } OnPanelShowed?.Invoke(panel); Log("OnPanelShowed " + panel.PanelType); } else { StartCoroutine(InstantShowPanelAsync(type, data)); } }