예제 #1
0
        public static UiFrame CreateDefaultUIFrame()
        {
            GameObject uiFrame = new GameObject("UI Frame");
            UiFrame    result  = uiFrame.AddComponent <UiFrame>();

            Camera camera = CreateCamera();

            camera.transform.SetParent(uiFrame.transform);

            EventSystem eventSystem = CreateEventSystem();

            eventSystem.transform.SetParent(uiFrame.transform);

            Canvas mainCanvas = CreateCanvas(camera);

            mainCanvas.transform.SetParent(uiFrame.transform);

            PanelLayer panelLayer = CreatePanelLayer();

            panelLayer.transform.SetParent(mainCanvas.transform, false);

            WindowLayer windowLayer = CreateWindowLayer();

            windowLayer.transform.SetParent(mainCanvas.transform, false);

            GameObject priorityPanelLayer = CreateUIObject("Priority Panel Layer");

            priorityPanelLayer.transform.SetParent(mainCanvas.transform, false);

            WindowParaLayer priorityWindowLayer = CreatePriorityWindowLayer();

            priorityWindowLayer.transform.SetParent(mainCanvas.transform, false);
            windowLayer.SetPriorityLayer(priorityWindowLayer);

            GameObject overlayPanelLayer = CreateUIObject("Overlay Panel Layer");

            overlayPanelLayer.transform.SetParent(mainCanvas.transform, false);

            GameObject tutorialPanelLayer = CreateUIObject("Tutorial Panel Layer");

            tutorialPanelLayer.transform.SetParent(mainCanvas.transform, false);

            GameObject blockerPanelLayer = CreateUIObject("Blocker Panel Layer");

            blockerPanelLayer.transform.SetParent(mainCanvas.transform, false);

            panelLayer.PriorityLayers = new PanelPriorityLayerList(new List <PanelPriorityLayerListEntry>
            {
                new PanelPriorityLayerListEntry(PanelPriority.Prioritary, priorityPanelLayer.transform),
                new PanelPriorityLayerListEntry(PanelPriority.Overlay, overlayPanelLayer.transform),
                new PanelPriorityLayerListEntry(PanelPriority.Tutorial, tutorialPanelLayer.transform),
                new PanelPriorityLayerListEntry(PanelPriority.Blocker, blockerPanelLayer.transform)
            });

            return(result);
        }
예제 #2
0
        public virtual void Initialize()
        {
            if (panelLayer == null)
            {
                panelLayer = GetComponentInChildren <PanelLayer>();

                if (panelLayer == null)
                {
                    Debug.LogError("UI Frame lacks Panel Layer!");
                }
                else
                {
                    panelLayer.Initialize(this);
                }
            }

            if (windowLayer == null)
            {
                windowLayer = GetComponentInChildren <WindowLayer>();

                if (windowLayer == null)
                {
                    Debug.LogError("UI Frame lacks Window Layer!");
                }
                else
                {
                    windowLayer.Initialize(this);
                    windowLayer.CurrentWindowChanged += OnCurrentWindowChanged;
                }
            }

            GameObject blockingTrackerTarget = MainCanvas ? MainCanvas.gameObject : gameObject;

            mainBlockingTracker = blockingTrackerTarget.GetOrAddComponent <InteractionBlockingTracker>();
            mainBlockingTracker.IsInteractableChanged += OnIsInteractableChanged;
        }