示例#1
0
    /// <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);
    }