protected void SetNextScene() { bool runningIsTransition = m_pRunningScene != null && m_pRunningScene.IsTransition;// is CCTransitionScene; // If it is not a transition, call onExit/cleanup if (!m_pNextScene.IsTransition) { if (m_pRunningScene != null) { m_pRunningScene.OnExit(); // issue #709. the root node (scene) should receive the cleanup message too // otherwise it might be leaked. if (m_bSendCleanupToScene) { m_pRunningScene.Cleanup(); GC.Collect(); } } } m_pRunningScene = m_pNextScene; m_pNextScene = null; if (!runningIsTransition && m_pRunningScene != null) { m_pRunningScene.OnEnter(); m_pRunningScene.OnEnterTransitionDidFinish(); } }