| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> 浅谈Unity UI适配(二) -> 正文阅读 |
|
[游戏开发]浅谈Unity UI适配(二) |
书接上回,继续讲CanvasScaler的第二种适配方式,ScaleWithScreenSize。 2.2 Scale With Screen Size —— 屏幕尺寸比例这种缩放模式下的UI位置是根据屏幕的分辨率和设置的宽高比来调整UI的位置的,通常做屏幕UI自适应的时候都需要调整到这个缩放模式下。 先来看官方的算法:
下面,就详细的说一下Screen Match Mode缩放模式: Expand(扩大):将Canvas Size进行宽或高扩大
?意思是分别算出长宽 ,也就是Screen Size在Reference Resolution的比例。 举例来说,Reference Resolution为1280 X 720,Screen Size为800 X 600. ?套用ScaleFactor公式: 实际结果同我们计算的一致: ? Shrink(收缩):将Canvas Size进行宽或高收缩 根据官方代码,计算方式如下:
意思是分别算出长宽 ,也就是Screen Size在Reference Resolution的比例。 举例来说,Reference Resolution为1280 X 720,Screen Size为800 X 600. ?套用ScaleFactor公式:
实际结果同我们计算的一致: Match Width or Height:根据Width或Height进行混合缩放 根据官方代码,计算方式如下:
分别对ScaleFactor Width、Height取对数后,再进行平均混合,那为什麽不直接使用March对Width、Height进行混合呢?? 让我们来比较一下: 假设Reference Resolution为400 X 300,Screen Size为200 X 600 大小关系是
看起来会像下图: ?当March为0.5时,ScaleFactor应该要是 1 (拉平):
一般混合:
对数混合:
scaleFactor一般混合为1.25,对数混合为1,结果很明显,使用对数混合能更完美的修正大小。 2-3、Constant Physical Size —— 恒定尺寸? 属性说明: 1、Physical Unit单位 ?2、Fallback Screen DPI:备用Dpi,当找不到设备Dpi时,使用此值 官方代码:
? 结论 ■ ScaleFactor 为 “目前硬件dpi” 占了 “目标单位” 的比例 ■ ReferencePixelsPerUnit 要与目前的Dpi在运算求出新的值,再传入Canvas中求出大小,公式如下: 新的 Reference Pixels Per Unit = Reference Pixels Per Unit * Physical Unit / Default Sprite DPI UI大小 = 原图大小(Pixels) / (Pixels Per Unit / 新的 Reference Pixels Per Unit) 参考资料: Unity UI Performance tips - Sharing my findings - Unity Forum? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 10:53:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |