/// <summary>
    /// UIOpen 전용 함수 for UIBasePanel
    /// 해당UI가 없으면 생성하고, 있으면 Show해주도록 한다.
    /// </summary>
    /// <param name="uiPath">생성하려는 UI의 경로 (UI의 고유이름으로 등록됨) ["UI/" + uiPath]</param>
    static public GameObject Open(string uiPath, params object[] args)
    {
        instance.CheckUIRoot();

        UIBasePanel panel = UIMgr.instance.FindInShowing(uiPath);

        if (null != panel)
        {
            // 숨겨져있다면 보여지도록 하고, 보여지는 상태에서 호출되면 재갱신이라고 보면됨.
            panel.Show(args);
        }
        else
        {
            GameObject newPanelGO = ResourceMgr.InstantiateUI(uiPath);
            if (null != newPanelGO)
            {
                panel = newPanelGO.GetComponent <UIBasePanel>();
                if (null == panel)
                {
                    Debug.LogError("UIBasePanel이 존재하지 않는 UI객체입니다.");
                }

                panel.gameObject.SetActive(true);
                panel.name = uiPath;
                panel.SetParams(args);
            }
        }

        if (panel is MissionPanel || panel is ResultRewardStarPanel)
        {
            instance.SetShadowLight(false);
        }

        //if (!uiPath.Contains("SystemPopup")  && 0 == instance.SceneUIMgr.CurPopupId)//현재 팝업이 켜져있는것
        //{
        //    UIBasePanel systemPanel = GetUIBasePanel("UIPopup/SystemPopup");
        //    if (systemPanel != null)
        //        (systemPanel as SystemPopup).OnEnd();
        //    else
        //        instance.SceneUIMgr.CurPopupId = -1;
        //}

        return(panel.gameObject);
    }