public void SetGuiState <T>() where T : GuiState { newGUIState = SystemHelper.FindOrCreateGuiState <T>(); previousGUIState = currentGuiState; if (newGUIState == null) { Debug.LogError("The specified guistate equals null!"); return; } if (currentGuiState == newGUIState) { Debug.LogWarning("You are trying to start the current guistate again, aborted!"); return; } int i = guiStates.Count; while (i-- > 0) { guiStates[i].SetActiveState(false); } //foreach (GuiState guiState in guiStates) { // guiState.SetActiveState(false); //} currentGuiState = newGUIState; currentGuiState.SetActiveState(true); if (OnGuiStateChange != null) { OnGuiStateChange(currentGuiState); } }