private static void EnterStatusLogic(string statusName, bool isFade = true) { if (!isFade) { if (s_currentAppStatus != null) { s_currentAppStatus.CloseAllUI(); try { s_currentAppStatus.OnExitStatus(); MemoryManager.FreeMemory(); } catch (Exception e) { Debug.LogError("EnterStatus Exception " + statusName + " " + e.ToString()); } } s_currentAppStatusName = statusName; ApplicationManager.Instance.currentStatus = statusName; s_currentAppStatus = GetStatus(statusName); try { s_currentAppStatus.OnEnterStatus(); } catch (Exception e) { Debug.LogError("EnterStatus Exception " + statusName + " " + e.ToString()); } try { if (OnStatusChangeCallBack != null) { OnStatusChangeCallBack(s_currentAppStatus); } } catch (Exception e) { Debug.LogError("EnterStatus Exception " + statusName + " " + e.ToString()); } } else { if (s_currentAppStatus != null) { //Debug.Log("Change "); UIManager.SetEventSystemEnable(false); CameraFade.FadeInToOut(s_fadeInTime, s_afterInDelayTime, s_fadeOutTime, () => { //Debug.Log("Change call back "); UIManager.SetEventSystemEnable(true); s_currentAppStatus.CloseAllUI(false); s_currentAppStatus.OnExitStatus(); MemoryManager.FreeMemory(); s_currentAppStatusName = statusName; ApplicationManager.Instance.currentStatus = statusName; s_currentAppStatus = GetStatus(statusName); try { s_currentAppStatus.OnEnterStatus(); } catch (Exception e) { Debug.LogError("EnterStatus Exception " + statusName + " " + e.ToString()); } try { if (OnStatusChangeCallBack != null) { OnStatusChangeCallBack(s_currentAppStatus); } } catch (Exception e) { Debug.LogError("EnterStatus Exception " + statusName + " " + e.ToString()); } }); } else { s_currentAppStatusName = statusName; ApplicationManager.Instance.currentStatus = statusName; s_currentAppStatus = GetStatus(statusName); try { s_currentAppStatus.OnEnterStatus(); } catch (Exception e) { Debug.LogError("EnterStatus Exception " + statusName + " " + e.ToString()); } try { if (OnStatusChangeCallBack != null) { OnStatusChangeCallBack(s_currentAppStatus); } } catch (Exception e) { Debug.LogError("EnterStatus Exception " + statusName + " " + e.ToString()); } } } }