美文网首页从Cocos到Unity
《从Cocos到Unity》- 4.UI-屏幕适配

《从Cocos到Unity》- 4.UI-屏幕适配

作者: 在关东走西口 | 来源:发表于2022-03-10 15:29 被阅读0次

本期涉及到的Cocos知识点

1.Cocos中的Canvas组件和Camera组件
2.Cocos中的屏幕适配原则FixedWidth和FixedHeight

创建Canvas和Camera节点

1.首先新建一个空的Scene。将场景上所有元素删除掉。留下一个空白的场景

2.右键创建一个Canvas节点,接着在Canvas下创建一个Camera节点。这样子目前的场景就类似于Cocos的空场景了。


带有Canvas的空场景

3.选中Canvas节点。
(1)将Canvas 组件上的 Render Mode设置为Screen Space - Camera
(2)将Canvas 组件上的Render Camera设置为我们刚刚创建的Camera(用Cocos的拖拽方式即可)
(3)将Canvas Scaler 组件上的UI Scale Mode 设为Scale With Sceen Size
(4)将Canvas Scaler 组件上的 Reference Resoultion 设置为我们需要的设计分辨,比如说 1080 x 1920
(5)将Canvas Scaler 组件上的 Sceen Match Mode 设置为 Match Width or Height
(6)Canvas Scaler组件上的Match是一个进度条。最左边是Width,最右边是Height。如果你滑动到最左边,那么就是Cocos里的FixedWidth, 如果滑动到最右边的就是Cocos里的FixedHeight。这里我们设置成FixedWidth

Canvas节点的属性设置如下

4.选中Camera节点
(1)将Camera 组件上的 Clear Flags 设置为 Skybox。(这点和Cocos类似)
(2)将Camera 组件上的 Culling Mask 设置为 UI。(这点和Cocos类似)
(2)将Camera 组件上的 Projection 设置为 Orthographic。(设置成正交视图)
(3)将Camera 组件上的 Size 设置为 1080。(因为本例子中设置的设计分辨率为1080 x 1920 并且为FixedWidth,其实这个属性值可以不设置,并有影响游戏运行)
(4)将Camera 节点的位置,设置为0,0, -100(这点很重要,不然摄像机照不到画布上)

设置Camera组件的属性

5.我们观察 Canvas节点Rect Transform 里的 Width 和 Height属性。可以看到现在Canvas的Size确实符和Cocos里的FixedWidth的效果。同时,我们也可以创建一个Image节点,通过切换Game视图的分辨率,观察不同分辨率下,这个Imag的大小和位置是否符合Cocos 的 FixedWidth的特性

多试试不同的分辨率下的效果

6.接着,我们拖动摄像机的位置,让其不在屏幕正中间。
(1)摄像机也能像Cocos的一样,渲染出部分的场景。这点和Cocos一样
(2)缩放摄像机,无法让UI界面也缩放。这点和Cocos不一样

getVisibleSize

Unity没有cocos类似的View.getVisibleSize()的函数,所以我们需要自己包装一层。

using UnityEngine;
using System.Collections;

namespace cc
{
    public class View
    {
         public enum ResoultionPolicy {
            FixedWidth,
            FixedHeight
        };

        public static float ResoultionWidth = 1080;
        public static float ResoultonHeight = 1920;
        public static ResoultionPolicy resoultonPoily = ResoultionPolicy.FixedWidth;

        /**
         * 获取到Cocos里类于visibleSize
         */
        static public Vector2 getVisbleSize()
        {
            float realWidth = Screen.width;
            float realHeight = Screen.height;
            Vector2 v2 = new Vector2();
            if (resoultonPoily == ResoultionPolicy.FixedWidth)
            {
                float scaler = realWidth / ResoultionWidth;
                float visibleHeight = realHeight / scaler;
                v2.x = ResoultionWidth;
                v2.y = visibleHeight;
            }
            else
            {
                float scaler = realHeight / ResoultonHeight;
                float visibleWidth = realWidth / scaler;
                v2.x = visibleWidth;
                v2.y = ResoultonHeight;
            }

            return v2;
        }


        /**
         * 获取到转换到了visibleSize下的safeArea
         */
        static public Rect getVisbleSafeArea()
        {
            Rect rect = Screen.safeArea;
       
            if (resoultonPoily == ResoultionPolicy.FixedWidth)
            {
                float realWidth = Screen.width;
                float scaler = ResoultionWidth / realWidth;
                rect.width *= scaler;
                rect.height *= scaler;
                rect.x *= scaler;
                rect.y *= scaler;
            }
            else
            {

                float realHeight = Screen.height;
                float scaler = ResoultonHeight / realHeight;
                rect.width *= scaler;
                rect.height *= scaler;
                rect.x *= scaler;
                rect.y *= scaler;
            }

            return rect;
        }




    }
}

这样子就可以愉快的使用了

 Debug.Log(cc.View.getVisbleSize());
 Debug.Log(cc.View.getVisbleSafeArea());

相关文章

  • 《从Cocos到Unity》- 4.UI-屏幕适配

    本期涉及到的Cocos知识点 1.Cocos中的Canvas组件和Camera组件2.Cocos中的屏幕适配原则F...

  • Unity屏幕适配

  • Unity屏幕适配

    Author :JerryYangCreate By 2020.11.02 环境:Unity:2019.4.2f1...

  • unity屏幕适配

    屏幕适配:简单说,就是将UI以适当的尺寸显示在屏幕上的适当位置。比如我们在手机上运行一个小游戏,打开它的菜单栏,一...

  • 《从Cocos到Unity》- 序言

     本书的目的旨在帮助拥有cocos开发经验的人更加快捷的过渡到unity技术栈。同时也是为我个人学习Unity做一...

  • Cocos Creator屏幕适配

    【原创博文,转载请注明出处!】 本文主要讨论如果在Cocos Creator上实现不同的屏幕适配方案,补充官方文档...

  • Cocos Creator屏幕适配

    本文主要讨论如果在Cocos Creator上实现不同的屏幕适配方案,补充官方文档的说明。 Cocos2d-JS屏...

  • Cocos 屏幕适配 Widget

    一、适配方式 参考多分辨率适配方案[https://docs.cocos.com/creator/manual/z...

  • Unity刘海屏幕适配

    https://blog.csdn.net/xj1009420846/article/details/80731855

  • Unity NGUI屏幕适配

    前段时间整理的一篇关于unity ui开发的文章,被推荐上了csdn首页,对于刚刚写文字的我来说,是莫大的鼓励,让...

网友评论

    本文标题:《从Cocos到Unity》- 4.UI-屏幕适配

    本文链接:https://www.haomeiwen.com/subject/mbifdrtx.html