当前位置: 首页 > news >正文

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

前言

本文会介绍一些关于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。

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

相关文章:

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

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

嵌入式学习day25 Linux

进程基本概念: 1.进程: 程序:存放在外存中的一段数据组成的文件 进程:是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡 2.进程相关命令: 1.top 动态查看当前系统中的所有进程信息(根据CPU占用率排序&a…...

Oracle数据泵跨大版本迁移数据库

Oracle数据泵跨大版本迁移数据库 source库导出元数据传输dump和数据文件到target库target库导入数据库迁移后的工作 🦈场景:将测试环境中一台Oracle 11g数据库迁移到另一台新搭建的19c数据库中。 🤔分析:由于是跨数据库大版本&…...

如何在Win系统从零开始搭建Z-blog网站,并将本地博客发布到公网可访问

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员,自己搭建网站制作网页是绕…...

sawForceDimensionSDK安装,sigma7+ros

force dimension的sdk中没有关于ros,借助开源的sawForceDimensionSDK实现对于数据的封装和可视化,方便后续使用 链接: GitHub - jhu-saw/sawForceDimensionSDK 具体步骤: 安装qt和ros,官网下载Force Dimension SDK …...

全量知识系统问题及SmartChat给出的答复 之3

Q8. 进一步,请展示如何使用这些技术来衡量、评估或适应不可避免的不匹配的知识汤问题的更进一步的全面代码。 为了处理不可避免的不匹配的知识汤问题,我们可以引入一些技术方法来衡量、评估或适应这种情况。 下是一个更进一步的全面代码示例&#xff0…...

【常用的 SVN 命令及简要示例】

常用的 SVN 命令及简要示例,供您参考: 检出代码: svn checkout https://svn.example.com/project/trunk提交修改: svn commit -m "Commit message"更新代码: svn update创建分支: svn copy https://svn.example.com/project/trunk \https://sv…...

ISP代理是什么?怎么用?

在跨境出海业务中,代理IP对于您的在线任务至关重要,尤其是对于那些运行多个帐户的人来说。为您的帐户选择正确类型的代理对于确保帐户安全非常重要,劣质的IP容易使账号遭受封号风险。IPFoxy的多种代理IP类型应用范围各有侧重,其中…...

微服务之qiankun主项目+子项目搭建

主项目使用history,子项目使用hash模式 1. 下载安装"qiankun": "^2.10.13"2. 手动调用qiankun,使用vue脚手架搭建的项目1. 主项目配置(我使用的是手动调用乾坤,在指定页面显示内容)1. 要使用的页面中引入乾坤…...

双非二本找实习前的准备day2

学习目标: 每天2-3到简单sql(刷完即止),每天复习代码随想录上的题目3道算法(时间充足可以继续),背诵的八股的问题也在这里记录了 今日碎碎念: SQL有些题用到的知识感觉不会出现在…...

快速搭建宠物医院服务小程序的步骤,无需编程经验

如果你是一家宠物医院或者宠物服务机构,想要拥有一款方便用户预约、查询信息的小程序,那么乔拓云网提供的轻应用小程序是你的不二选择。下面将为你详细介绍如何轻松打造宠物医院服务小程序。 1. 进入乔拓云网后台,点击【轻应用小程序】中的【…...

从0开始python学习-53.python中flask创建简单接口

目录 1. 创建一个简单的请求,没有写方法时默认为get 2. 创建一个get请求 3. 创建一个post请求,默认可以使用params和表单传参 4. 带有参数的post请求 1. 创建一个简单的请求,没有写方法时默认为get from flask import Flask, request# 初始化一个flask的对象 ap…...

如何怎麼搭建高效的爬蟲全球代理IP池?

爬蟲技術可以幫助我們從各類網站上獲取大量的數據資訊,但常常會遇到IP被封鎖的問題,這就是我們需要搭建全球代理IP池的原因。那麼,如何搭建一個高效的IP代理池呢? IP代理池指什麼? 首先,我們需要明白什麼是…...

FinalShell连接Linux

远程连接linux 我们使用VMware可以得到Linux虚拟机,但是在/Mware中操作Linux的命令行页面不太方便,主要是: 内容的复制、粘贴跨越VMware不方便 文件的上传、下载跨越VMware不方便 不方便也就是和Linux系统的各类交互,跨越VMwar 到Linux操作系…...

数据分析Pandas专栏---第十一章<Pandas数据聚合与分组(1)>

前言: 数据聚合和分组操作是数据处理过程中不可或缺的一部分。它们允许我们根据特定的条件对数据进行分组,并对每个组进行聚合计算。这对于统计分析、汇总数据以及生成报告和可视化非常有用。无论是市场营销数据分析、销售业绩评估还是金融数据建模,数据…...

【Linux】将程序的输出显示到屏幕,同时写入到log文件

1. 将程序的输出显示到屏幕,同时写入到log文件 nohup python -u main.py 2>&1 | tee -a log.txt &nohup 放在命令的开头,表示不挂起(no hang up),也即,关闭终端或者退出某个账号,进…...

MySQL(基础篇)——函数、约束

一.函数 1.定义 函数是指一段可以直接被另一段程序调用的程序或代码。 2.字符串函数 常见如下: -- 字符串拼接 SELECT CONCAT(hello,MySql) AS CONCAT -- 将字符串全部转为小写 SELECT LOWER(HEllo MYSql) AS LOWER -- 将字符串全部转为大写 SELECT UPPER(Hello…...

【wails】(4):使用wails做桌面应用开发,整合chatgpt-web项目做前端,进行本地开发,web端也可以连调,使用websocket实现

1,视频地址 【wails】(4):使用wails做桌面应用开发,整合chatgpt-web项目做前端,进行本地开发,web端也可以连调,使用websocket实现 2,演示效果 启动先是报500 错误&#…...

八股文打卡day24——数据库(1)

面试题:左连接和右连接的区别? 我的回答: 左连接的SQL语句是:左表 left join 右表 on 连接条件,表示以左表为基础,将左表的的所有记录与右表进行连接。即使右表中没有与左表匹配的记录,左连接…...

robots.txt 文件规则

robots.txt 是一种用于网站根目录的文本文件,其主要目的在于指示网络爬虫(web crawlers)和其他网页机器人(bots)哪些页面可以抓取,以及哪些页面不应该被抓取。可以看作是网站和搜索引擎机器人之间的一个协议…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

MMaDA: Multimodal Large Diffusion Language Models

CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

网络编程(UDP编程)

思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...

UE5 音效系统

一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...