private void _onSceneUnload(Scene _scene) { if (_scene.buildIndex < 0) { return; } UIBase ui = null; for (int i = 0; i < m_loaded_ui.Count;) { ui = m_loaded_ui[i]; if (ui.IsShow() && ui.SceneChangeAutoHide && _handleUIHide(ui)) { continue; } if (ui.DestroyMode == UIDestroyMode.SceneChange) { ui.OnUnload(); m_loaded_ui.RemoveAt(i); DestroyImmediate(ui.gameObject, true); continue; } i++; } m_windows_name_stack.Clear(); m_dialog_name_list.Clear(); }
private bool _handleUIHide(UIBase _ui) { _showOrHide(_ui, false); _ui.OnHide(null); if (_ui.DestroyMode == UIDestroyMode.Hide) { _ui.OnUnload(); m_loaded_ui.Remove(_ui); DestroyImmediate(_ui.gameObject, true); return(true); } return(false); }