zoukankan      html  css  js  c++  java
  • unity实战 手机屏幕适配

    使用背景

    为了在UI中使用特效层,项目Canvas采用了Screen Space-Camera类型

    UI的Scale Mode 选择的是Scale With Screen Size 的Expand,画布大小填的是1334, 750

    在该选择下,会自动根据分辨率适配宽度/高度。

    自动适配的规则是:

    屏幕实际宽高比值的  < 画布大小的宽高比值  采用以宽度缩放

    屏幕实际宽高比值的  > 画布大小的宽高比值  采用以高度缩放

    screen.width/screen.height < 1334/750

    实际问题

    1.血条或者头顶的ui,跳字的位置会有偏差,根据3D坐标转2D坐标的接口得到的坐标(Camera.main.WorldToScreenPoint)已经不适用了,需要做缩放。

    缩放的解决方式:

    以宽缩放,需要以宽的缩放比例去缩放高

    ratio = 1334/screen.width

    x = screen2d.x * ratio - screen.width/2 // 以宽度的比例求出x值(减去屏幕大小的一半是因为锚点在中心)

    y = (screen2d.y - screen.height/2) * ratio // 直接以宽的比例求出y值

    以高缩放,需要以高的缩放比例去缩放高

    ratio = 750/screen.height

    x = (screen2d.x - screen.width/2) * ratio // 直接以高的比例求出x值

    y = screen2d.y * ratio - screen.height/2 // 以高度的比例求出y值(减去屏幕大小的一半是因为锚点在中心)

    ui使用该坐标即可完美的适配

    2.当遇到ipad这种宽高度比低的会以宽度适配,导致上下留白。

    解决方式让ui做高些,现在还没做一些其他尝试。先临时处理

    3.刘海屏

    项目解决思路

    打表的形式,ios有自己的接口screen.safearea,Android9之后有api接口,其他安卓厂商有自己的设定,只要把市面的机型刘海高度记录下来,适配的时候直接使用即可。

    ios安全范围参考:

    https://www.cnblogs.com/zhw511006/p/7735483.html

  • 相关阅读:
    Go语言之Go语言文件处理
    Go语言之Go语言网络编程
    Go语言之Go语言并发
    Go语言之Go语言锁机制
    Go语言之Go语言 异常处理与测试
    Go语言之Go语言反射
    Go语言之Go 语言方法
    Go语言之递归函数
    js 改变文章字体大小
    .net获取当前url各种属性(文件名、参数、域名、端口等)的方法(转)
  • 原文地址:https://www.cnblogs.com/leilei-weapon/p/10217660.html
Copyright © 2011-2022 走看看