예제 #1
0
        public UIPanelInstance CreatePanelInstanceAndAddToListIfNess(UIPanelInfo panel)
        {
            if (GetPanelInstance(panel.panelName) != null)
            {
                return(GetPanelInstance(panel.panelName));
            }

            if (panel.uiObjectReference == null)
            {
                panel.uiObjectReference = ResourceManager.Instance.LoadAsset <UnityEngine.Object>(panel.objectPath);
            }

            if (panel.uiObjectReference == null)
            {
                QLogger.LogErrorAndThrowException("Panel object not found!");
            }

            GameObject instance = GameObject.Instantiate(panel.uiObjectReference, new Vector3(9999, 9999, 9999), Quaternion.identity, transform) as GameObject;

            instance.SetActive(false);
            instance.transform.localPosition = panel.localPosition;
            UIPanelInstance panelInstance = null;

            if (panel.type == UIPanelInfo.Type.Screen)
            {
                panelInstance = new ScreenPanelInstance();
            }
            else if (panel.type == UIPanelInfo.Type.Popup)
            {
                panelInstance = new PopupPanelInstance();
            }
            else if (panel.type == UIPanelInfo.Type.Alert)
            {
                panelInstance = new AlertPanelInstance();
            }
            else if (panel.type == UIPanelInfo.Type.GamePlay)
            {
                panelInstance = new GamePlayScreenPanelInstance();
            }
            else
            {
                QLogger.LogErrorAndThrowException("Should not be here !");
            }

            panelInstance.panelInfo = panel;
            panelInstance.instance  = instance;
            panelInstance.uiPanel   = instance.GetComponent <UIPanel>();
            if (panelInstance.uiPanel == null)
            {
                QLogger.LogErrorAndThrowException("Ui panel instance not found ");
            }
            panelsInMemory.Add(panelInstance);
            return(panelInstance);
        }
예제 #2
0
        public UIPanel PushScreen(string screenName, bool visible)
        {
            UIPanelInstance panelInstance = GetPanelInstance(screenName);

            if (panelInstance == null)
            {
                UIPanelInfo panelInfo = GetPanelReference(screenName);
                if (panelInfo == null)
                {
                    QLogger.LogErrorAndThrowException("No screen found with name:" + screenName);
                }
                if (panelInfo.type != UIPanelInfo.Type.Screen)
                {
                    QLogger.LogErrorAndThrowException("This panel is not a screen type");
                }
                panelInstance = CreatePanelInstanceAndAddToListIfNess(panelInfo);
                if (panelInstance == null)
                {
                    QLogger.LogErrorAndThrowException("Panel instance was not created!");
                }
            }
            if (!(panelInstance is ScreenPanelInstance))
            {
                QLogger.LogErrorAndThrowException("This panel is not screen type - 2");
            }
            ScreenPanelInstance screenInstance = panelInstance as ScreenPanelInstance;

            if (screenPanelStack.Count > 0)
            {
                screenPanelStack.Peek().uiPanel.OnPusedBack();
                screenPanelStack.Peek().instance.SetActive(false);
            }
            screenPanelStack.Push(screenInstance);
            panelInstance.instance.SetActive(visible);
            return(panelInstance.uiPanel);
        }