Exemple #1
0
 public CanvasScalerSerializable(CanvasScaler scaler) : base(scaler)
 {
     uiScaleMode            = scaler.uiScaleMode;
     referenceResolution    = scaler.referenceResolution;
     screenMatchMode        = scaler.screenMatchMode;
     matchWidthOrHeight     = scaler.matchWidthOrHeight;
     defaultSpriteDPI       = scaler.defaultSpriteDPI;
     fallbackScreenDPI      = scaler.fallbackScreenDPI;
     referencePixelsPerUnit = scaler.referencePixelsPerUnit;
     dynamicPixelsPerUnit   = scaler.dynamicPixelsPerUnit;
     physicalUnit           = scaler.physicalUnit;
     scaleFactor            = scaler.scaleFactor;
 }
Exemple #2
0
 public CanvasScalerSpec(
     CanvasScaler.ScaleMode scaleMode             = CanvasScaler.ScaleMode.ConstantPhysicalSize,
     Vector2?referenceResolution                  = null,
     CanvasScaler.ScreenMatchMode screenMatchMode = CanvasScaler.ScreenMatchMode.MatchWidthOrHeight,
     float matchWidthOrHeight     = 0f,
     float referencePixelsPerUnit = 100f)
 {
     ScaleMode              = scaleMode;
     ReferenceResolution    = referenceResolution.GetValueOrDefault(new Vector2(x: 1920, y: 1080));
     ScreenMatchMode        = screenMatchMode;
     MatchWidthOrHeight     = matchWidthOrHeight;
     ReferencePixelsPerUnit = referencePixelsPerUnit;
 }
        /// <summary>
        /// スクリーンマッチモードを設定する
        /// </summary>
        /// <param name="tMode"></param>
        /// <param name="tScale"></param>
        /// <returns></returns>
        public bool SetScreenMatchMode(CanvasScaler.ScreenMatchMode tMode, float tScale)
        {
            CanvasScaler tCanvasScaler = _canvasScaler;

            if (tCanvasScaler == null)
            {
                return(false);
            }

            tCanvasScaler.screenMatchMode    = tMode;
            tCanvasScaler.matchWidthOrHeight = tScale;

            return(true);
        }
        public static void CreatUIManager(Vector2 referenceResolution, CanvasScaler.ScreenMatchMode MatchMode, bool isOnlyUICamera, bool isVertical)
        {
            //UIManager
            GameObject UIManagerGo = new GameObject("UIRoot");

            UIManagerGo.layer = LayerMask.NameToLayer("UI");
            QFramework.UIManager UIManager = UIManagerGo.AddComponent <QFramework.UIManager>();

            CreateUICamera(UIManager, 99, referenceResolution, MatchMode, isOnlyUICamera, isVertical);

            ProjectWindowUtil.ShowCreatedAsset(UIManagerGo);

            //保存UIManager
            ReSaveUIManager(UIManagerGo);
        }
Exemple #5
0
    public static void CreatUIManager(Vector2 referenceResolution, CanvasScaler.ScreenMatchMode MatchMode, bool isOnlyUICamera, bool isVertical)
    {
        //新增五个层级
        EditorExpand.AddSortLayerIfNotExist("GameUI");
        EditorExpand.AddSortLayerIfNotExist("Fixed");
        EditorExpand.AddSortLayerIfNotExist("Normal");
        EditorExpand.AddSortLayerIfNotExist("TopBar");
        EditorExpand.AddSortLayerIfNotExist("PopUp");

        //UIManager
        GameObject UIManagerGo = new GameObject("UIManager");

        UIManagerGo.layer = LayerMask.NameToLayer("UI");
        UIManager UIManager = UIManagerGo.AddComponent <UIManager>();

        CreateUICamera(UIManager, "DefaultUI", 1, referenceResolution, MatchMode, isOnlyUICamera, isVertical);

        ProjectWindowUtil.ShowCreatedAsset(UIManagerGo);

        //保存UIManager
        ReSaveUIManager(UIManagerGo);
    }
Exemple #6
0
        protected virtual void HandleScaleWithScreenSize()
        {
            Vector2 vector        = new Vector2((float)Screen.width, (float)Screen.height);
            int     targetDisplay = this.m_Canvas.targetDisplay;

            if (targetDisplay > 0 && targetDisplay < Display.displays.Length)
            {
                Display display = Display.displays[targetDisplay];
                vector = new Vector2((float)display.renderingWidth, (float)display.renderingHeight);
            }
            float scaleFactor = 0f;

            CanvasScaler.ScreenMatchMode screenMatchMode = this.m_ScreenMatchMode;
            if (screenMatchMode != CanvasScaler.ScreenMatchMode.MatchWidthOrHeight)
            {
                if (screenMatchMode != CanvasScaler.ScreenMatchMode.Expand)
                {
                    if (screenMatchMode == CanvasScaler.ScreenMatchMode.Shrink)
                    {
                        scaleFactor = Mathf.Max(vector.x / this.m_ReferenceResolution.x, vector.y / this.m_ReferenceResolution.y);
                    }
                }
                else
                {
                    scaleFactor = Mathf.Min(vector.x / this.m_ReferenceResolution.x, vector.y / this.m_ReferenceResolution.y);
                }
            }
            else
            {
                float a = Mathf.Log(vector.x / this.m_ReferenceResolution.x, 2f);
                float b = Mathf.Log(vector.y / this.m_ReferenceResolution.y, 2f);
                float p = Mathf.Lerp(a, b, this.m_MatchWidthOrHeight);
                scaleFactor = Mathf.Pow(2f, p);
            }
            this.SetScaleFactor(scaleFactor);
            this.SetReferencePixelsPerUnit(this.m_ReferencePixelsPerUnit);
        }
        public static void CreateUICamera(QFramework.UIManager UIManager, float cameraDepth, Vector2 referenceResolution, CanvasScaler.ScreenMatchMode MatchMode, bool isOnlyUICamera, bool isVertical)
        {
            GameObject UIManagerGo = UIManager.gameObject;

            UIManagerGo.AddComponent <RectTransform>();

            var sObj = new SerializedObject(UIManager);

            //挂载点
            GameObject    goTmp = null;
            RectTransform rtTmp = null;

            goTmp       = new GameObject("Bg");
            goTmp.layer = LayerMask.NameToLayer("UI");
            goTmp.transform.SetParent(UIManagerGo.transform);
            goTmp.transform.localScale = Vector3.one;
            rtTmp                    = goTmp.AddComponent <RectTransform>();
            rtTmp.anchorMax          = new Vector2(1, 1);
            rtTmp.anchorMin          = new Vector2(0, 0);
            rtTmp.anchoredPosition3D = Vector3.zero;
            rtTmp.sizeDelta          = Vector2.zero;

            sObj.FindProperty("mBgTrans").objectReferenceValue = rtTmp.gameObject;


            goTmp       = new GameObject("AnimationUnder");
            goTmp.layer = LayerMask.NameToLayer("UI");
            goTmp.transform.SetParent(UIManagerGo.transform);
            goTmp.transform.localScale = Vector3.one;
            rtTmp                    = goTmp.AddComponent <RectTransform>();
            rtTmp.anchorMax          = new Vector2(1, 1);
            rtTmp.anchorMin          = new Vector2(0, 0);
            rtTmp.anchoredPosition3D = Vector3.zero;
            rtTmp.sizeDelta          = Vector2.zero;

            sObj.FindProperty("mAnimationUnderTrans").objectReferenceValue = rtTmp.gameObject;


            goTmp       = new GameObject("Common");
            goTmp.layer = LayerMask.NameToLayer("UI");
            goTmp.transform.SetParent(UIManagerGo.transform);
            goTmp.transform.localScale = Vector3.one;
            rtTmp                    = goTmp.AddComponent <RectTransform>();
            rtTmp.anchorMax          = new Vector2(1, 1);
            rtTmp.anchorMin          = new Vector2(0, 0);
            rtTmp.anchoredPosition3D = Vector3.zero;
            rtTmp.sizeDelta          = Vector2.zero;

            sObj.FindProperty("mCommonTrans").objectReferenceValue = rtTmp.gameObject;


            goTmp       = new GameObject("AnimationOn");
            goTmp.layer = LayerMask.NameToLayer("UI");
            goTmp.transform.SetParent(UIManagerGo.transform);
            goTmp.transform.localScale = Vector3.one;
            rtTmp                    = goTmp.AddComponent <RectTransform>();
            rtTmp.anchorMax          = new Vector2(1, 1);
            rtTmp.anchorMin          = new Vector2(0, 0);
            rtTmp.anchoredPosition3D = Vector3.zero;
            rtTmp.sizeDelta          = Vector2.zero;

            sObj.FindProperty("mAnimationOnTrans").objectReferenceValue = rtTmp.gameObject;


            goTmp       = new GameObject("PopUI");
            goTmp.layer = LayerMask.NameToLayer("UI");
            goTmp.transform.SetParent(UIManagerGo.transform);
            goTmp.transform.localScale = Vector3.one;
            rtTmp                    = goTmp.AddComponent <RectTransform>();
            rtTmp.anchorMax          = new Vector2(1, 1);
            rtTmp.anchorMin          = new Vector2(0, 0);
            rtTmp.anchoredPosition3D = Vector3.zero;
            rtTmp.sizeDelta          = Vector2.zero;

            sObj.FindProperty("mPopUITrans").objectReferenceValue = rtTmp.gameObject;


            goTmp       = new GameObject("Const");
            goTmp.layer = LayerMask.NameToLayer("UI");
            goTmp.transform.SetParent(UIManagerGo.transform);
            goTmp.transform.localScale = Vector3.one;
            rtTmp                    = goTmp.AddComponent <RectTransform>();
            rtTmp.anchorMax          = new Vector2(1, 1);
            rtTmp.anchorMin          = new Vector2(0, 0);
            rtTmp.anchoredPosition3D = Vector3.zero;
            rtTmp.sizeDelta          = Vector2.zero;
            sObj.FindProperty("mConstTrans").objectReferenceValue = rtTmp.gameObject;


            goTmp       = new GameObject("Toast");
            goTmp.layer = LayerMask.NameToLayer("UI");
            goTmp.transform.SetParent(UIManagerGo.transform);
            goTmp.transform.localScale = Vector3.one;
            rtTmp                    = goTmp.AddComponent <RectTransform>();
            rtTmp.anchorMax          = new Vector2(1, 1);
            rtTmp.anchorMin          = new Vector2(0, 0);
            rtTmp.anchoredPosition3D = Vector3.zero;
            rtTmp.sizeDelta          = Vector2.zero;

            sObj.FindProperty("mToastTrans").objectReferenceValue = rtTmp.gameObject;


            goTmp       = new GameObject("Forward");
            goTmp.layer = LayerMask.NameToLayer("UI");
            goTmp.transform.SetParent(UIManagerGo.transform);
            goTmp.transform.localScale = Vector3.one;
            rtTmp                    = goTmp.AddComponent <RectTransform>();
            rtTmp.anchorMax          = new Vector2(1, 1);
            rtTmp.anchorMin          = new Vector2(0, 0);
            rtTmp.anchoredPosition3D = Vector3.zero;
            rtTmp.sizeDelta          = Vector2.zero;
            sObj.FindProperty("mForwardTrans").objectReferenceValue = rtTmp.gameObject;


            goTmp       = new GameObject("Design");
            goTmp.layer = LayerMask.NameToLayer("UI");
            goTmp.transform.SetParent(UIManagerGo.transform);
            goTmp.transform.localScale = Vector3.one;
            rtTmp                    = goTmp.AddComponent <RectTransform>();
            rtTmp.anchorMax          = new Vector2(1, 1);
            rtTmp.anchorMin          = new Vector2(0, 0);
            rtTmp.anchoredPosition3D = Vector3.zero;
            rtTmp.sizeDelta          = Vector2.zero;
            // goTmp.AddComponent<QFramework.Hide>();

            goTmp       = new GameObject("EventSystem");
            goTmp.layer = LayerMask.NameToLayer("UI");
            goTmp.transform.SetParent(UIManagerGo.transform);
            goTmp.transform.localScale = Vector3.one;
            rtTmp                    = goTmp.AddComponent <RectTransform>();
            rtTmp.anchorMax          = new Vector2(1, 1);
            rtTmp.anchorMin          = new Vector2(0, 0);
            rtTmp.anchoredPosition3D = Vector3.zero;
            rtTmp.sizeDelta          = Vector2.zero;
            goTmp.AddComponent <UnityEngine.EventSystems.EventSystem>();
            goTmp.AddComponent <UnityEngine.EventSystems.StandaloneInputModule>();
            //UIcamera
            GameObject cameraGo = new GameObject("UICamera");

            cameraGo.transform.SetParent(UIManagerGo.transform);
            cameraGo.transform.localPosition = new Vector3(0, 0, -1000);
            Camera camera = cameraGo.AddComponent <Camera>();

            camera.cullingMask  = LayerMask.GetMask("UI");
            camera.orthographic = true;
            camera.depth        = cameraDepth;
            sObj.FindProperty("mUICamera").objectReferenceValue = camera.gameObject;

            //Canvas
            Canvas canvasComp = UIManagerGo.AddComponent <Canvas>();

            canvasComp.renderMode   = RenderMode.ScreenSpaceCamera;
            canvasComp.worldCamera  = camera;
            canvasComp.sortingOrder = 100;
            sObj.FindProperty("mCanvas").objectReferenceValue = canvasComp.gameObject;

            //UI Raycaster
            sObj.FindProperty("mGraphicRaycaster").objectReferenceValue = UIManagerGo.AddComponent <GraphicRaycaster>();



            //CanvasScaler
            CanvasScaler scaler = UIManagerGo.AddComponent <CanvasScaler>();

            scaler.uiScaleMode         = CanvasScaler.ScaleMode.ScaleWithScreenSize;
            scaler.referenceResolution = referenceResolution;
            scaler.screenMatchMode     = MatchMode;
            sObj.FindProperty("mCanvasScaler").objectReferenceValue = scaler;

            if (!isOnlyUICamera)
            {
                camera.clearFlags = CameraClearFlags.Depth;
                camera.depth      = cameraDepth;
            }
            else
            {
                camera.clearFlags      = CameraClearFlags.SolidColor;
                camera.backgroundColor = Color.black;
            }
            scaler.matchWidthOrHeight = isVertical ? 1 : 0;
            //重新保存
            ReSaveUIManager(UIManagerGo);

            sObj.ApplyModifiedPropertiesWithoutUndo();
        }
Exemple #8
0
    public static void CreateUICamera(UIManager UIManager, string key, float cameraDepth, Vector2 referenceResolution, CanvasScaler.ScreenMatchMode MatchMode, bool isOnlyUICamera, bool isVertical)
    {
        UILayerManager.UICameraData uICameraData = new UILayerManager.UICameraData();

        uICameraData.m_key = key;

        GameObject    UIManagerGo = UIManager.gameObject;
        GameObject    canvas      = new GameObject(key);
        RectTransform canvasRt    = canvas.AddComponent <RectTransform>();

        canvasRt.SetParent(UIManagerGo.transform);
        uICameraData.m_root = canvas;

        //UIcamera
        GameObject cameraGo = new GameObject("UICamera");

        cameraGo.transform.SetParent(canvas.transform);
        cameraGo.transform.localPosition = new Vector3(0, 0, -1000);
        Camera camera = cameraGo.AddComponent <Camera>();

        camera.cullingMask    = LayerMask.GetMask("UI");
        camera.orthographic   = true;
        camera.depth          = cameraDepth;
        uICameraData.m_camera = camera;

        //Canvas
        Canvas canvasComp = canvas.AddComponent <Canvas>();

        canvasComp.renderMode  = RenderMode.ScreenSpaceCamera;
        canvasComp.worldCamera = camera;

        //UI Raycaster
        canvas.AddComponent <GraphicRaycaster>();

        //CanvasScaler
        CanvasScaler scaler = canvas.AddComponent <CanvasScaler>();

        scaler.uiScaleMode         = CanvasScaler.ScaleMode.ScaleWithScreenSize;
        scaler.referenceResolution = referenceResolution;
        scaler.screenMatchMode     = MatchMode;

        if (!isOnlyUICamera)
        {
            camera.clearFlags = CameraClearFlags.Depth;
            camera.depth      = 1;
        }
        else
        {
            camera.clearFlags      = CameraClearFlags.SolidColor;
            camera.backgroundColor = Color.black;
        }
        if (isVertical)
        {
            scaler.matchWidthOrHeight = 1;
        }
        else
        {
            scaler.matchWidthOrHeight = 0;
        }

        //挂载点
        GameObject     goTmp          = null;
        RectTransform  rtTmp          = null;
        UILayerManager UILayerManager = UIManagerGo.GetComponent <UILayerManager>();

        goTmp       = new GameObject("GameUI");
        goTmp.layer = LayerMask.NameToLayer("UI");
        goTmp.transform.SetParent(canvas.transform);
        goTmp.transform.localScale = Vector3.one;
        rtTmp                            = goTmp.AddComponent <RectTransform>();
        rtTmp.anchorMax                  = new Vector2(1, 1);
        rtTmp.anchorMin                  = new Vector2(0, 0);
        rtTmp.anchoredPosition3D         = Vector3.zero;
        rtTmp.sizeDelta                  = Vector2.zero;
        uICameraData.m_GameUILayerParent = goTmp.transform;

        goTmp       = new GameObject("Fixed");
        goTmp.layer = LayerMask.NameToLayer("UI");
        goTmp.transform.SetParent(canvas.transform);
        goTmp.transform.localScale = Vector3.one;
        rtTmp                           = goTmp.AddComponent <RectTransform>();
        rtTmp.anchorMax                 = new Vector2(1, 1);
        rtTmp.anchorMin                 = new Vector2(0, 0);
        rtTmp.anchoredPosition3D        = Vector3.zero;
        rtTmp.sizeDelta                 = Vector2.zero;
        uICameraData.m_FixedLayerParent = goTmp.transform;

        goTmp       = new GameObject("Normal");
        goTmp.layer = LayerMask.NameToLayer("UI");
        goTmp.transform.SetParent(canvas.transform);
        goTmp.transform.localScale = Vector3.one;
        rtTmp                            = goTmp.AddComponent <RectTransform>();
        rtTmp.anchorMax                  = new Vector2(1, 1);
        rtTmp.anchorMin                  = new Vector2(0, 0);
        rtTmp.anchoredPosition3D         = Vector3.zero;
        rtTmp.sizeDelta                  = Vector2.zero;
        uICameraData.m_NormalLayerParent = goTmp.transform;

        goTmp       = new GameObject("TopBar");
        goTmp.layer = LayerMask.NameToLayer("UI");
        goTmp.transform.SetParent(canvas.transform);
        goTmp.transform.localScale = Vector3.one;
        rtTmp                            = goTmp.AddComponent <RectTransform>();
        rtTmp.anchorMax                  = new Vector2(1, 1);
        rtTmp.anchorMin                  = new Vector2(0, 0);
        rtTmp.anchoredPosition3D         = Vector3.zero;
        rtTmp.sizeDelta                  = Vector2.zero;
        uICameraData.m_TopbarLayerParent = goTmp.transform;

        goTmp       = new GameObject("PopUp");
        goTmp.layer = LayerMask.NameToLayer("UI");
        goTmp.transform.SetParent(canvas.transform);
        goTmp.transform.localScale = Vector3.one;
        rtTmp                           = goTmp.AddComponent <RectTransform>();
        rtTmp.anchorMax                 = new Vector2(1, 1);
        rtTmp.anchorMin                 = new Vector2(0, 0);
        rtTmp.anchoredPosition3D        = Vector3.zero;
        rtTmp.sizeDelta                 = Vector2.zero;
        uICameraData.m_PopUpLayerParent = goTmp.transform;

        UILayerManager.UICameraList.Add(uICameraData);

        //重新保存
        ReSaveUIManager(UIManagerGo);
    }
    public static void CreatUIManager(Vector2 l_referenceResolution, CanvasScaler.ScreenMatchMode l_MatchMode, bool l_isOnlyUICamera, bool l_isVertical)
    {
        //UIManager
        GameObject l_UIManagerGo = new GameObject("UIManager");

        l_UIManagerGo.layer = LayerMask.NameToLayer("UI");
        //UIManager l_UIManager = l_UIManagerGo.AddComponent<UIManager>();
        l_UIManagerGo.AddComponent <UIManager>();

        //UIcamera
        GameObject l_cameraGo = new GameObject("UICamera");

        l_cameraGo.transform.SetParent(l_UIManagerGo.transform);
        l_cameraGo.transform.localPosition = new Vector3(0, 0, -1000);
        Camera l_camera = l_cameraGo.AddComponent <Camera>();

        l_camera.cullingMask  = LayerMask.GetMask("UI");
        l_camera.orthographic = true;
        if (!l_isOnlyUICamera)
        {
            l_camera.clearFlags = CameraClearFlags.Depth;
            l_camera.depth      = 1;
        }
        else
        {
            l_camera.clearFlags      = CameraClearFlags.SolidColor;
            l_camera.backgroundColor = Color.black;
        }

        //Canvas
        Canvas canvas = l_UIManagerGo.AddComponent <Canvas>();

        canvas.renderMode  = RenderMode.ScreenSpaceCamera;
        canvas.worldCamera = l_camera;

        //UI Raycaster
        //GraphicRaycaster l_Graphic = l_UIManagerGo.AddComponent<GraphicRaycaster>();
        l_UIManagerGo.AddComponent <GraphicRaycaster>();

        //CanvasScaler
        CanvasScaler l_scaler = l_UIManagerGo.AddComponent <CanvasScaler>();

        l_scaler.uiScaleMode         = CanvasScaler.ScaleMode.ScaleWithScreenSize;
        l_scaler.referenceResolution = l_referenceResolution;
        l_scaler.screenMatchMode     = l_MatchMode;

        if (l_isVertical)
        {
            l_scaler.matchWidthOrHeight = 1;
        }
        else
        {
            l_scaler.matchWidthOrHeight = 0;
        }

        //挂载点
        GameObject     l_goTmp    = null;
        RectTransform  l_rtTmp    = null;
        UILayerManager l_layerTmp = l_UIManagerGo.GetComponent <UILayerManager>();

        l_goTmp       = new GameObject("GameUI");
        l_goTmp.layer = LayerMask.NameToLayer("UI");
        l_goTmp.transform.SetParent(l_UIManagerGo.transform);
        l_goTmp.transform.localScale = Vector3.one;
        l_rtTmp                        = l_goTmp.AddComponent <RectTransform>();
        l_rtTmp.anchorMax              = new Vector2(1, 1);
        l_rtTmp.anchorMin              = new Vector2(0, 0);
        l_rtTmp.anchoredPosition3D     = Vector3.zero;
        l_rtTmp.sizeDelta              = Vector2.zero;
        l_layerTmp.m_GameUILayerParent = l_goTmp.transform;

        l_goTmp       = new GameObject("Fixed");
        l_goTmp.layer = LayerMask.NameToLayer("UI");
        l_goTmp.transform.SetParent(l_UIManagerGo.transform);
        l_goTmp.transform.localScale = Vector3.one;
        l_rtTmp                       = l_goTmp.AddComponent <RectTransform>();
        l_rtTmp.anchorMax             = new Vector2(1, 1);
        l_rtTmp.anchorMin             = new Vector2(0, 0);
        l_rtTmp.anchoredPosition3D    = Vector3.zero;
        l_rtTmp.sizeDelta             = Vector2.zero;
        l_layerTmp.m_FixedLayerParent = l_goTmp.transform;

        l_goTmp       = new GameObject("Normal");
        l_goTmp.layer = LayerMask.NameToLayer("UI");
        l_goTmp.transform.SetParent(l_UIManagerGo.transform);
        l_goTmp.transform.localScale = Vector3.one;
        l_rtTmp                        = l_goTmp.AddComponent <RectTransform>();
        l_rtTmp.anchorMax              = new Vector2(1, 1);
        l_rtTmp.anchorMin              = new Vector2(0, 0);
        l_rtTmp.anchoredPosition3D     = Vector3.zero;
        l_rtTmp.sizeDelta              = Vector2.zero;
        l_layerTmp.m_NormalLayerParent = l_goTmp.transform;

        l_goTmp       = new GameObject("TopBar");
        l_goTmp.layer = LayerMask.NameToLayer("UI");
        l_goTmp.transform.SetParent(l_UIManagerGo.transform);
        l_goTmp.transform.localScale = Vector3.one;
        l_rtTmp                        = l_goTmp.AddComponent <RectTransform>();
        l_rtTmp.anchorMax              = new Vector2(1, 1);
        l_rtTmp.anchorMin              = new Vector2(0, 0);
        l_rtTmp.anchoredPosition3D     = Vector3.zero;
        l_rtTmp.sizeDelta              = Vector2.zero;
        l_layerTmp.m_TopbarLayerParent = l_goTmp.transform;

        l_goTmp       = new GameObject("PopUp");
        l_goTmp.layer = LayerMask.NameToLayer("UI");
        l_goTmp.transform.SetParent(l_UIManagerGo.transform);
        l_goTmp.transform.localScale = Vector3.one;
        l_rtTmp                       = l_goTmp.AddComponent <RectTransform>();
        l_rtTmp.anchorMax             = new Vector2(1, 1);
        l_rtTmp.anchorMin             = new Vector2(0, 0);
        l_rtTmp.anchoredPosition3D    = Vector3.zero;
        l_rtTmp.sizeDelta             = Vector2.zero;
        l_layerTmp.m_PopUpLayerParent = l_goTmp.transform;
        //m_UILayerManager = l_layerTmp;

        ProjectWindowUtil.ShowCreatedAsset(l_UIManagerGo);

        string Path = "Resources/UI/UIManager.prefab";

        FileTool.CreatFilePath(Application.dataPath + "/" + Path);
        PrefabUtility.CreatePrefab("Assets/" + Path, l_UIManagerGo, ReplacePrefabOptions.ConnectToPrefab);
    }
Exemple #10
0
            public void CreatUIManager(Vector2 referenceResolution, CanvasScaler.ScreenMatchMode MatchMode, bool isOnlyUICamera, bool isVertical)
            {
                //UIManager
                GameObject UIManagerGo = new GameObject("UIManager");

                UIManagerGo.layer = LayerMask.NameToLayer("UI");
                //UIManager UIManager = UIManagerGo.AddComponent<UIManager>();
                UIManagerGo.AddComponent <UILayerManagerComponent>();
                UIManagerGo.AddComponent <UIManagerComponent>();

                //EventSystem
                GameObject evtsys = new GameObject("EventSystem");

                evtsys.transform.SetParent(UIManagerGo.transform);
                evtsys.AddComponent <EventSystem>();
                evtsys.AddComponent <StandaloneInputModule>();

                //UIcamera
                GameObject cameraGo = new GameObject("UICamera");

                cameraGo.transform.SetParent(UIManagerGo.transform);
                cameraGo.transform.localPosition = new Vector3(0, 0, -1000);
                Camera camera = cameraGo.AddComponent <Camera>();

                camera.cullingMask  = LayerMask.GetMask("UI");
                camera.orthographic = true;
                if (!isOnlyUICamera)
                {
                    camera.clearFlags = CameraClearFlags.Depth;
                    camera.depth      = 1;
                }
                else
                {
                    camera.clearFlags      = CameraClearFlags.SolidColor;
                    camera.backgroundColor = Color.black;
                }

                //Canvas
                Canvas canvas = UIManagerGo.AddComponent <Canvas>();

                canvas.renderMode  = RenderMode.ScreenSpaceCamera;
                canvas.worldCamera = camera;

                //UI Raycaster
                //GraphicRaycaster Graphic = UIManagerGo.AddComponent<GraphicRaycaster>();
                UIManagerGo.AddComponent <GraphicRaycaster>();

                //CanvasScaler
                CanvasScaler scaler = UIManagerGo.AddComponent <CanvasScaler>();

                scaler.uiScaleMode         = CanvasScaler.ScaleMode.ScaleWithScreenSize;
                scaler.referenceResolution = referenceResolution;
                scaler.screenMatchMode     = MatchMode;

                scaler.matchWidthOrHeight     = 1;
                scaler.referencePixelsPerUnit = 100;

                if (isVertical)
                {
                    scaler.matchWidthOrHeight = 1;
                }
                else
                {
                    scaler.matchWidthOrHeight = 0;
                }

                //挂载点
                GameObject              goTmp    = null;
                RectTransform           rtTmp    = null;
                UILayerManagerComponent layerTmp = UIManagerGo.GetComponent <UILayerManagerComponent>();

                goTmp       = new GameObject("GameUI");
                goTmp.layer = LayerMask.NameToLayer("UI");
                goTmp.transform.SetParent(UIManagerGo.transform);
                goTmp.transform.localScale = Vector3.one;
                rtTmp                        = goTmp.AddComponent <RectTransform>();
                rtTmp.anchorMax              = new Vector2(1, 1);
                rtTmp.anchorMin              = new Vector2(0, 0);
                rtTmp.anchoredPosition3D     = Vector3.zero;
                rtTmp.sizeDelta              = Vector2.zero;
                layerTmp.m_GameUILayerParent = goTmp.transform;

                goTmp       = new GameObject("Fixed");
                goTmp.layer = LayerMask.NameToLayer("UI");
                goTmp.transform.SetParent(UIManagerGo.transform);
                goTmp.transform.localScale = Vector3.one;
                rtTmp                       = goTmp.AddComponent <RectTransform>();
                rtTmp.anchorMax             = new Vector2(1, 1);
                rtTmp.anchorMin             = new Vector2(0, 0);
                rtTmp.anchoredPosition3D    = Vector3.zero;
                rtTmp.sizeDelta             = Vector2.zero;
                layerTmp.m_FixedLayerParent = goTmp.transform;

                goTmp       = new GameObject("Normal");
                goTmp.layer = LayerMask.NameToLayer("UI");
                goTmp.transform.SetParent(UIManagerGo.transform);
                goTmp.transform.localScale = Vector3.one;
                rtTmp                        = goTmp.AddComponent <RectTransform>();
                rtTmp.anchorMax              = new Vector2(1, 1);
                rtTmp.anchorMin              = new Vector2(0, 0);
                rtTmp.anchoredPosition3D     = Vector3.zero;
                rtTmp.sizeDelta              = Vector2.zero;
                layerTmp.m_NormalLayerParent = goTmp.transform;

                goTmp       = new GameObject("TopBar");
                goTmp.layer = LayerMask.NameToLayer("UI");
                goTmp.transform.SetParent(UIManagerGo.transform);
                goTmp.transform.localScale = Vector3.one;
                rtTmp                        = goTmp.AddComponent <RectTransform>();
                rtTmp.anchorMax              = new Vector2(1, 1);
                rtTmp.anchorMin              = new Vector2(0, 0);
                rtTmp.anchoredPosition3D     = Vector3.zero;
                rtTmp.sizeDelta              = Vector2.zero;
                layerTmp.m_TopbarLayerParent = goTmp.transform;

                goTmp       = new GameObject("PopUp");
                goTmp.layer = LayerMask.NameToLayer("UI");
                goTmp.transform.SetParent(UIManagerGo.transform);
                goTmp.transform.localScale = Vector3.one;
                rtTmp                       = goTmp.AddComponent <RectTransform>();
                rtTmp.anchorMax             = new Vector2(1, 1);
                rtTmp.anchorMin             = new Vector2(0, 0);
                rtTmp.anchoredPosition3D    = Vector3.zero;
                rtTmp.sizeDelta             = Vector2.zero;
                layerTmp.m_PopUpLayerParent = goTmp.transform;
                //m_UILayerManager = layerTmp;

                ProjectWindowUtil.ShowCreatedAsset(UIManagerGo);

                /*
                 * string Path = "Resources/UI/UIManager.prefab";
                 * FileTool.CreatFilePath(Application.dataPath + "/" + Path);
                 * PrefabUtility.CreatePrefab("Assets/" + Path, UIManagerGo, ReplacePrefabOptions.ConnectToPrefab);
                 */
            }