Unity3d UGUI基于屏幕尺寸的自适应

作者: 重装机霸 | 来源:发表于2015-12-10 09:04 被阅读8274次

现有的自适应方法,通常都是基于屏幕的分辨率。分辨率越高的设备上,UI显示的越小。这就造成了一些5寸左右的手机分辨率比ipad等平板设备还要高。UI在平板上显示太大。但是在高分辨率手机上显示太小。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;

public class ScreenAdaptive : MonoBehaviour
{
    public List<CanvasScaler> UICanvas;

    private float diagonalInches;
    private float width;
    private float height;
    private float ypotinousa;
    private float dpi;

    private float screenScale;
    void screenInch()
    {
        dpi = Screen.dpi;
        if (dpi < 25 || dpi > 1000)
        {
            dpi = 150;
        }
        width = Screen.width * Screen.width;
        height = Screen.height * Screen.height;
        ypotinousa = width + height;
        ypotinousa = Mathf.Sqrt(ypotinousa);
        diagonalInches = ypotinousa / Screen.dpi;
    }

    void Awake()
    {
        if (Application.isMobilePlatform)
        {
            screenInch();
            //以五寸屏幕作为标准
            screenScale = diagonalInches / 5f;

            for (int i = 0; i < UICanvas.Count; i++)
            {
                Vector2 _size = UICanvas[i].referenceResolution;
                UICanvas[i].referenceResolution = _size * screenScale;
                if (UICanvas[i].GetComponent<Canvas>().renderMode == RenderMode.ScreenSpaceCamera)
                {
                    UICanvas[i].GetComponent<Canvas>().worldCamera.orthographicSize *= screenScale;
                }
            }
        }
    }
}

以上脚本为基于屏幕物理尺寸自适应UI的一种方法。通过计算屏幕的DPI获取到屏幕的实际尺寸。然后根据一个标准的尺寸对UI的分辨率进行相对应的缩放。
可以改进的地方就是对于大屏幕或者小屏幕进行缩放的限制。避免类似ipad pro这类的设备上,UI有小的离谱。
配合这个脚本使用的同时。UI也需要用到锚点,进行初步的自适应,不然会造成UI的错乱。

相关文章

  • Unity3d UGUI基于屏幕尺寸的自适应

    现有的自适应方法,通常都是基于屏幕的分辨率。分辨率越高的设备上,UI显示的越小。这就造成了一些5寸左右的手机分辨率...

  • 面试之屏幕适配

    一,屏幕尺寸适配 1.1布局匹配 布局元素自适应屏幕尺寸使用RelativeLayout,LinearLayout...

  • 104.PC官网适配移动端

    自适应:为了兼容不同的屏幕尺寸 响应式:不仅是兼容屏幕尺寸,还要兼顾样式上的等,包含的内容比自适应更多 因为是纯静...

  • 关于Unity中的UGUI的屏幕自适应(多分配率适配)

    前言: 最近在学习UGUI,在学习UGUI当中的屏幕自适应的时候出现了问题,搞的我很头疼,于是在网上查了很多资料,...

  • 媒体查询_栅格系统

    Media Queries 自适应阶段 自从有了不同屏幕的尺寸,我们就开始尝试自适应了 居中 虽然不能让所有屏幕都...

  • 媒体查询

    Media Queries 自适应阶段 自从有了不同屏幕的尺寸,我们就开始尝试自适应了 居中 虽然不能让所有屏幕都...

  • 媒体查询

    自适应阶段 自从有了不同屏幕的尺寸,我们就开始尝试自适应了 居中 虽然不能让所有屏幕都自适应,但是可以利用居中让元...

  • 微信小程序 wxss样式

    1. 尺寸单位 rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx...

  • 自适应网站

    什么是自适应网站? 指的是网页通过不同尺寸不同终端设备访问可以自适应显示,根据屏幕大小、宽度自动调整布局,自适应也...

  • 微信小程序尺寸单位rpx以及样式相关介绍

    微信小程序尺寸单位 rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应。规定屏幕宽为750...

网友评论

    本文标题:Unity3d UGUI基于屏幕尺寸的自适应

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