예제 #1
0
        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();
        }
예제 #2
0
 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);
 }