/// <summary> /// Open a new UI window /// </summary> /// <param name="name"> The name of the UI window to be opened </param> /// <param name="mode"> The mode to be used to open the UI window </param> /// <param name="args"> Extra arguments passed to UIWindow.OnOpen() </param> /// <returns></returns> public GUIWindow Open(string name, UIMode mode = UIMode.DEFAULT, params object[] args) { #if UNITY_EDITOR Debug.Log(LogUtility.MakeLogStringFormat("UI", IsInViewport(name) ? name + " is already in viewport" : "Open " + name)); #endif if (IsInViewport(name)) { return(uiWindowsOpened[name]); } GUIWindow uiWindow = Instantiate(ResourceUtility.GetGUIPrefab <GUIWindow>(name), transform, false); uiWindow.transform.SetAsFirstSibling(); uiWindowsOpened.Add(name, uiWindow); uiWindow.OnOpen(args); if (mode != UIMode.PERMANENT) { uiWindowStack.Push(name); } return(uiWindow); }