public UIWindow GoToScreen(WindowTag windowTag, UnityEngine.Object param, bool removePrevious, bool deactivatePrevious = true) { //Close/deactivate previous window UIWindow lastWindow = GetLastWindow(); if (removePrevious) { lastWindow.Close(); } else if (deactivatePrevious) { DeactivateWindow(lastWindow); } //Open window UIWindow window = GetOpenedWindow(windowTag); if (window == null) { UIWindow prefab = Array.Find(screenPrefabs, val => val.WindowTag == windowTag); window = Instantiate(prefab); openeedWindows.Add(window); } else { ActivateWindow(window); } return(window); }
public UIWindow GetOpenedWindow(WindowTag screenName) { foreach (UIWindow window in openeedWindows) { if (window.WindowTag == screenName) { return(window); } } return(null); }
//Use in Inspector public void GoToScreen(string windowName) { WindowTag windowTag = WindowTag.Undefined; try { windowTag = (WindowTag)Enum.Parse(typeof(WindowTag), windowName); } catch { Debug.LogError($"UIController | There are no screen for tag: {windowName}"); } if (windowTag != WindowTag.Undefined) { GoToScreen(windowTag); } }
//Use in Code public UIWindow GoToScreen(WindowTag windowTag) { return(GoToScreen(windowTag, null, removePrevious: false)); }