unity实战 手机屏幕适配

news/2024/7/4 12:39:14

使用背景

为了在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

 

转载于:https://www.cnblogs.com/leilei-weapon/p/10217660.html


http://www.niftyadmin.cn/n/2246209.html

相关文章

八皇后问题---递归回溯

每次需要满足的条件&#xff1a;abs(x[j]-x[k])abs(j-k) || x[j]x[k] #include <iostream> #include <cmath> using namespace std; const int num8; int sum0; int x[num]{0}; bool place (int k) {for(int j1;j<k;j){if(abs(x[j]-x[k])abs(j-k)||x[j]x[k])re…

容器监控实践—cAdvisor

概述 为了解决docker stats的问题(存储、展示)&#xff0c;谷歌开源的cadvisor诞生了&#xff0c;cadvisor不仅可以搜集一台机器上所有运行的容器信息&#xff0c;还提供基础查询界面和http接口&#xff0c;方便其他组件如Prometheus进行数据抓取&#xff0c;或者cadvisor inf…

染陌足迹——SeeConf2019

水文预警&#xff01;&#xff01;多图预警&#xff01;&#xff01; 听了一整天&#xff0c;每位讲师的演讲都十分精彩&#xff0c;每个主题都能给我从另一个角度的思考与启迪&#xff0c;大部分主题都是以未来的交互设计作为维度来展开思考与探讨&#xff0c;以故事或者事例的…

Java的四种线程池的使用,以及自定义线程工厂

四种线程池四种线程池分别是&#xff1a;newCachedThreadPool、newFixedThreadPool 、newScheduledThreadPool 和newSingleThreadExecutor &#xff0c;下面对这几个线程池一一讲解。newCachedThreadPool&#xff1a;可缓存的线程池源码&#xff1a;public static ExecutorServ…

30K iOS程序员的简述:如何快速进阶成为高级开发人员 ...

前言&#xff1a; 本篇文章适用于所有在这个行业已经有了几年时间后想要在职业生涯中取得突破的开发人员&#xff0c;编程人员和程序员&#xff08;或者你可能刚刚开始&#xff0c;但希望你能看到你的路径&#xff09; 本文适合那些有着简单愿望的人&#xff1a;你想成为一名高…

初涉Windows Mobile 5.0的开发(起步篇)[Teaks]

这个周末构建了Windows Mobile 5.0的开发环境&#xff0c;也简单测试了一下&#xff0c;算是起步吧&#xff0c;下面是简要步骤&#xff1a; 工欲善其事&#xff0c;必先利其器。首先安装工具 1. 安装Visual Studio 2005 2.开发工具包, 我下的是800多M的那个&#xff0c;Window…

用Kotlin写一个基于Spring Boot的RESTful服务

Spring太复杂了&#xff0c;配置这个东西简直就是浪费生命。尤其在没有什么并发压力&#xff0c;随便搞一个RESTful服务 让整个业务跑起来先的情况下&#xff0c;更是么有必要纠结在一堆的XML配置上。显然这么想的人是很多的&#xff0c;于是就 有了Spring Boot。又由于Java 8太…

(原創) array傳進function該怎麼寫才好? (.NET) (C#)

Abstract在C/C&#xff0c;array傳進function有很多技巧&#xff0c;但在C#&#xff0c;卻非常的單純&#xff0c;因為array自帶GetLength()&#xff0c;本篇主要是針對C/C做比較。 Introduction 1/**//* 2(C) OOMusou 2007 http://oomusou.cnblogs.com 3 4Filename : Arra…