Unity UI适配规则和对热门游戏适配策略的拆解

news2025/2/25 5:43:17

前言

本文会介绍一些关于UI适配的基础概念,并且统计了市面上常见的设备的分辨率的情况。同时通过拆解目前市面上较为成功的两款休闲游戏Royal Match和Monopoly GO(两款均为近期游戏付费榜前几的游戏),大致推断出他们的适配策略,以供学习和参考。

基础概念

设计分辨率:设计分辨率是指在游戏开发中用来制作游戏资源(如图形、UI元素等)的基准分辨率。设计分辨率通常是一个固定值,游戏的所有资源都是基于这个分辨率进行创建和设计的。设计分辨率的选择对游戏的视觉效果和用户体验至关重要。

参考分辨率:参考分辨率是指在Canvas Scaler组件中设置的用于设计UI的目标分辨率。它代表了游戏UI在这个分辨率下的理想显示效果。Canvas Scaler会根据实际运行时的屏幕分辨率和参考分辨率的比例来缩放UI元素,以便在不同分辨率下尽可能保持一致的UI布局和外观。

高度适配:在高度适配时,游戏的UI元素和场景内容会根据屏幕的垂直高度进行调整。这意味着无论屏幕的宽高比如何,游戏的内容始终会填充整个屏幕的垂直空间,而水平方向可能会存在一些留白或被裁剪。

宽度适配:在宽度适配时,游戏的UI元素和场景内容会根据屏幕的水平宽度进行调整。这意味着无论屏幕的宽高比如何,游戏的内容始终会填充整个屏幕的水平空间,而垂直方向可能会存在一些留白或被裁剪。

Unity中相关设置

Canvas下的Canvas Scaler可以修改Reference Resolution(参考分辨率)。另外可以将Screen Match Mode设置为Match Width Or Height。代表可以进行宽度适配或者高度适配。宽度适配的话,将Match值设置为0,高度适配则是设置为1.

在Game栏可以设置实际显示的分辨率大小,可以通过该设置模拟各种分辨率的设备。

常见屏幕尺寸

下面是收集了市面上一些常见的设备以及极端长宽比设备的屏幕大小

iphoneX及以后的刘海屏设备,长宽比均为19.5比9(适配换算后为1560:720)。最长的设备是目前主流的安卓设备,长宽比是20:9(1600:720)。平板方面最宽的设备为4:3(1280:960)。

各种分辨率下的显示区域对比

下图绘制了常见机型的分辨率显示的区域。白色区域的分辨率为720*1280。红色的分辨率为720*1600,灰色区域的分辨率为720*1560,绿色区域的分辨率为960*1280。同时为了方便起见后文中均以720*1280(720P)为设计分辨率进行讨论和拆解。实际在开发过程中,可以根据项目的要求,选择更高或者更低的设计分辨率进行设计。比如画面要求高,并且面对高端设备的用户,可以采用1080*1920(1080P)的设计分辨率出图。

热门游戏的适配策略拆解

本次拆解,主要是参考了Royal Match和Monopoly GO!两款游戏,两款游戏分别在2024年1月全球热门移动游戏收入榜的2,3名。Royal Match的首次上线时间为2021年,Monopoly Go则为2023年,并且两款游戏均保持着较高的更新频率。通过拆解这两款游戏,可以大致了解当前欧美休闲厂商在UI适配上的策略,值得学习和借鉴。

RoyalMatch

UI部分

下面是对局部分的UI,左侧为720*1280右侧为720*1600。roy match的ui元素,都是在720*1280的分辨率下设计的。并且尽可能地充满整个屏幕。然后在屏幕高于1280的情况下,宽度适配,直接拉长背景。顶部和底部的UI都会贴边摆放。同时顶部UI会为刘海(挖孔)预留部分空间。

下图中左侧为720*1280,右侧为720*1560(iphonexs)。

UI元素同样是宽度适配。底部专门为iphone的Home Indicator保留了35个像素。

顶部UI则是保留了52个像素。

下图中左侧为iphone8p的截图,右侧为ipad mini6的截图,Ipad的适配则比较特别,经过缩放对比后发现,UI所在区域的大小为720*1496。底部为Home 导航额外预留了一块空间。底部UI的背景通过九宫格拉伸,宽度和高度均进行了缩放。但是按钮部分,还是按照720的宽度进行排布。并没有等间距摆放充满整个屏幕的宽度。由于ipad没有刘海,顶部UI直接贴顶边,同样也是在720的宽度内摆放.

背景图部分

下面左侧是720*1280(iphone 8p)的游戏内截图,右侧为720*1600的截图。通过缩放对比发现,右侧图片是左侧图直接等比缩放得到

下面的图则是ipad的背景缩放后与iphone 8p的图缩放后的对比。可以看到ipad的背景是要比720要更宽一些

最后通过解包royal match的资源后,找到图集中的实际背景图

实际的大小为1736*2894,换算后的比例为768*1280

monopoly go!

UI部分

下图中左侧为720*1280,右侧为720*1560(iphonexs),同样是采用了宽度适配的方式。顶部栏在布局的时候为刘海屏留出了47个像素

底部为Home Indicator保留了52个像素。同样是采用UI拉九宫格的方式填充空白部分

下面第一张图中左侧是840*1280(ipad mini)右侧是720*1280(iphone 8p)。pad使用了高度适配,宽度拉伸的方式。

顶部和底部UI贴边摆放。同时底部也为home导航额外预留了一块区域,整体UI有所上移。顶部栏使用了九宫的方式左右拉伸了。底部背景缩放后填充整个空白区域。不同于RoyalMatch只在720的宽度内摆放按钮。大富翁go的顶部和底部的按钮,都按照缩放后的宽度,在840的区域内摆放。底部UI元素均匀摆放,顶部UI贴边摆放。

背景图部分

 从左到右的分辨率分别是840*1280(ipad mini6),720*1280(iphone8),720*1560(iphonexs),720*1600(iqoo neo 8pro)

对比之后,发现大富翁go应该是只用了一张720*1560的背景图。在pad上直接等比缩放。高度大于1560的设备,在刘海部分放置了一个黑条。Monopoly Go的标题则是单独切图,按照上面的UI适配规则放置在背景图上。

实际拆包后发现,使用的图片大小为487*1024.换算后为720*1513。通过底部UI填充的方式覆盖住1560的高度

总结

对比RoyalMatch和大富翁go。总结出以下几个共同点和不同的地方。在后续的UI设计中,可以参考他们的共同的部分进行资源的制作。不同部分的处理方式,需要与美术和产品沟通后,确定最后采用的策略。

共同点:

1.会根据设备的不同额外为刘海屏和Home导航预留部分空白区域,不会在该区域内摆放可以操作的UI。

2.顶部和底部的UI背景都会设计成可以进行九宫拉伸的背景。并且根据设备的不同填充空白区域。

3.UI的安全区域均为720*1280,确保了目前市面上最小设备能够完整展示UI。

4.在手机上,均采用宽度适配,高度拉伸的方式进行UI的摆放

不同点:

1.两个游戏为刘海屏和Home导航预留空白部分的像素不同。

2.在遇到比1560还要更长的设备时,royal match采用的是缩放背景图,填充空白区域的策略。大富翁go则是在顶部放置一个黑条覆盖空白区域

3.在ipad上大富翁go依旧是按照720*1280的分辨率,通过高度适配宽度拉伸的方式摆放UI。Royal match的设计分辨率则产生了改变,猜测是在720*1496的分辨率下进行高度适配。

4.大富翁go的全屏背景只使用了一张720*1560的图,然后根据设别不同进行等比例缩放。Royal match则是使用768*1280的背景,然后再进行等比缩放。

5.Royal Match在横向摆放UI时,仅在720的宽度内进行摆放,并不考虑宽度大于720的情况。大富翁go在宽度大于720时,则是会根据设备的宽度均匀(或者贴边)摆放UI。

创作不易,如果觉得这篇文章对你有所帮助,可以动动小手,点个赞哈,ღ( ´・ᴗ・` )比心

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1477747.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CP AutoSar之LIN Driver详细说明

本文遵循autosar标准:R22-11 1 简介 本文指定了 AUTOSAR 基础软件模块 LIN 驱动程序的功能、API 和配置。 1.1 范围 LIN驱动程序适用于ISO 17987主节点和从节点。AUTOSAR中的LIN实现偏离了本LIN驱动器规范中所述的ISO 17987规范,但LIN总线上的行为不…

Allure报告归纳与总结

一、环境准备: 提前准备环境:Java1.8 Allure2 解析过程: 1.安装 allure2(信赖Java1.8) allure官方下载地址: https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/ 2.安装 allure-pytest 命令:pip install allure-pytest 3.生成…

Mamba 作者谈 LLM 未来架构

文章目录 前言 1、为什么注意力机制有效? 2、注意力计算量呈平方级增长 3、Striped Hyena 是个什么模型? 4、什么是 Mamba? 5、Mamba 硬件优化 6、2024年架构预测 7、对 AI 更多的预测 本片文章来自【机器之心】对Mamba作者进行采访所进行的编译整理。 …

TCP缓存

TCP缓存是指TCP协议在数据传输过程中使用的一种机制,用于临时存储和管理数据包。它主要有三个作用:提高网络性能、保证数据的可靠性和实现流量控制。 首先,TCP缓存可以提高网络性能。当发送端发送数据时,TCP协议会将数据分割成若…

自动驾驶加速落地,激光雷达放量可期(上)

1 激光雷达应用广泛,汽车有望成最大催化 激光雷达(LiDAR)是一种主动遥感技术,通过测定传感器发出的激光在传感器与目标物体之间的传播距离,来分析目标地物表面的反射能量大小、反射波谱的幅度、频率和相位等信息&#…

ensp模拟单臂路由实现不同两个网段主机访问

拓扑结构图如下 1.pc机配置略过 2.交换机配置 三个接口,两个连接pc,连接方式access,一个连接路由器 连接方式trunk sy #进入系统 视图模式 undo info-center enable #关闭信息 vlan batch 10 20#批量创建vlan int g 0/0/2#进入2端口 p…

黑马嵌入式开发数电模电基础课

本课程旨在为学习者提供扎实的嵌入式系统开发所需的数字电路和模拟电路知识。通过理论与实践相结合的方式,学习者将掌握数字信号处理、模拟信号调节等关键概念,为将来在嵌入式系统设计与开发领域取得成功打下坚实基础。 视频大小:4.9G 课程…

【Vue3】回顾watch,学习watchEffect

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

生产报工异常信息提示器如何精确提醒管理人员

在现代生产环境中,生产报工异常信息的及时提醒对于管理人员来说至关重要。为了精确提醒管理人员并确保生产流程的顺利进行,智能信息接收腕表作为一种先进的工具,结合了多项功能,可以有效地实现生产报工异常信息的精确提醒。以下将…

H3C防火墙安全授权导入

一、防火墙授权概述 前面我们已经了解了一些防火墙的基本概念,有讲过防火墙除了一些基本功能,还有一些高级安全防护,但是这些功能需要另外独立授权,不影响基本使用。这里以H3C防火墙为例进行大概了解下。 正常情况下,防…

55.仿简道云公式函数实战-文本函数-MID

1. MID函数 返回文本字符串中从指定位置开始的特定数目的字符,该数目由用户指定。 2. 函数用法 MID(text, start_num, num_chars) 3. 函数示例 返回文本字符串中从指定位置开始的特定数目的字符,该数目由用户指定。 text: 必需。 包含要提取字符的文…

centos物理电脑安装过程(2024年1月)

开机时:CtrlAltDelete键重启电脑 重启开始时:按F11,桌面弹出蓝色框,选择第二个SSK SFD142 1.00,回车 选择install centos7安装 选择后弹出选择安装选项,选择语言 连接无线网络 安装设置,选择磁…

面试笔记系列五之MySql+Mybaits基础知识点整理及常见面试题

目录 Myibatis myibatis执行过程 mybatis的优缺点有哪些? mybatis和hibernate有什么区别? mybatis中#{}和${}的区别是什么? 简述一下mybatis插件运行原理及开发流程?(插件四大天王) mybatis的mapper没…

C++string(二)

我们上次讲完了Element access,现在我们继续往下讲: 一.Modifiers: 1.operator: Extends the string by appending additional characters at the end of its current value: 翻译:在string类对象结尾追加字符 如下: #include…

vue前端使用get方式获取api接口数据 亲测

// GET请求示例 axios.get(‘http://127.0.0.1:5005/ReadIDCardInfo’) // 将URL替换为真正的API接口地址 .then(response > { if(response.data.code1){ var jsonDataresponse.data.data; console.log(jsonData); // 输出从API接口返回的数据 } }) .catch(error > { con…

ModStartCMS v8.1.0 图片前端压缩,抖音授权登录

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市…

电脑合集检测工具箱,图吧工具箱软件推荐

今天最软库给大家体验的是电脑检测工具箱。 图吧工具箱,是开源、免费、绿色、纯净的硬件检测工具合集,专为所有计算机硬件极客、DIY爱好者、各路大神及小白制作。集成大量常见硬件检测、评分工具,一键下载、方便使用。 不忘初心,始…

leetcode:860.柠檬水找零

题意:按照支付顺序,进行支付,能够正确找零。 解题思路:贪心策略:针对支付20的客人,优先选择消耗10而不是消耗5,因为5可以用来找零10或20. 代码实现:有三种情况(代表三种…

Docker本地部署GPT聊天机器人并实现公网远程访问

文章目录 前言1. 拉取相关的Docker镜像2. 运行Ollama 镜像3. 运行Chatbot Ollama镜像4. 本地访问5. 群晖安装Cpolar6. 配置公网地址7. 公网访问8. 固定公网地址9. 结语 前言 随着ChatGPT 和open Sora 的热度剧增,大语言模型时代,开启了AI新篇章,大语言模型的应用非常广泛&…

Oracle 直接路径插入(Direct-Path Insert)

直接路径插入(Direct Path Insert)是Oracle一种数据加载提速技术,可以在使用insert语句或SQL*Loader工具大批量加载数据时使用。直接路径插入处理策略与普通insert语句完全不同,Oracle会通过牺牲空间,安全性&#xff0…