首页 > 其他分享 >Unity屏幕适配的3个妙招

Unity屏幕适配的3个妙招

时间:2023-11-30 14:35:25浏览次数:40  
标签:纬度 个妙 适配 分辨率 Unity 大小 屏幕 1920x1080

屏幕适配是面试中必问的一个题目,今天给大家说说怎么样做屏幕适配。

对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!

设计分辨率大家都好理解,那么什么是适配策略呢?

假设我们以设计分辨率是 960x640为例,我们要适配到 1920x1080上面, 大家会发现,这个怎么适配啊? 960x640----> 1920x1080,高度不一样,宽度不一样,有两个不同的纬度需要适配,这样的话处理起来有一些难度。游戏引擎就想了一个办法,我先在一个纬度保持一致,然后在另外一个纬度来进行适配; 那到底是选哪个纬度呢?如果是高度一致,那么就是固定高度,如果是宽度一致,那么就是固定宽度。这个就是固定高度与固定宽度的由来。

固定高度: 960x640, 先做好逻辑分辨率((1920 * 640 / 1080)x 640)适配, 然后,我们在乘以一个比例scale(1080/640), 到1920x1080上;

固定宽度: 960x640, 先做好逻辑分辨率适配 (960 x (1080 * 960 / 1920)), 然后我们在剩一个比例scale(1920/960), 到 1920x1080上;

游戏引擎处理的大小,坐标,都是逻辑大小,游戏窗口的逻辑大小就是我们固定高度or固定宽度策略算出来以后的分辨率;

所以我们在代码里面的大小位置,都是基于逻辑分辨率的,在最终绘制的时候,大小,位置,都会乘以到目标像素分辨率锁固定的比例scale;

比如 100 * 100, 固定高度, 到 1920x1080后像素大小是 (100x100) * 1080/640, 这样我们最终就适配到 1920x1080上了;

妙招1: 停靠点

一个纬度和设计是一致的,我们只要考虑另外一个纬度的适配,在另外一个纬度的范围内,把设计里面的主要内容都摆布进来。这个时候就会出现相对的几个点,比如我的类型是基于中心的,基于上面的,基于下面的… 所有在适配的时候,我们一般会做几个标志的参考点,如图红色点点

核心原理就是,不管你的屏幕大小怎么变,我只要动态的根据屏幕大小来调整参考点的位置,这样,相对于参考点的元素也会跟着移动,一般适配我们都是这样来做的,那这个适配我们很多都会有组件来完成,例如Widget等。你上边的logo,无论屏幕怎么变,都是上面的,下边的,无论屏幕怎么变都是下面的。

妙招2: 内容缩放

即使这样,因为一个纬度毕竟不同,有可能在这个纬度上,内容放不下,粘到一起了,我们还是的要对内容的大小来做一些调整, 可以根据逻辑分辨率,来做一些内容上的缩放,能让这些内容排下;

秒招3: 大小调整

有一些UI控件,是区域性的,比如滚动条等,我们希望适配后,区域大小也要随屏幕的变化而变化,那么这个时候,可以设置区域相对于边界的偏移, 如图:

这样边界变了,大小也跟着变了。

其实搞懂了适配的核心原理,一点都不难,下次面试你会回答了么?

附:视频教程

第022课UGUI屏幕适配​www.bycwedu.com/promotion_channels/171555448

标签:纬度,个妙,适配,分辨率,Unity,大小,屏幕,1920x1080
From: https://www.cnblogs.com/liuwenyi/p/17867270.html

相关文章

  • 适配器模式
    1模式动机在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。如何应对这种“迁移的变化”?如何既能利用现有对象(老接口)的良好实现,同时又能满足新的应用环境所要求的接口?Adapter模式主要应用于“......
  • 实验8:适配器模式
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解适配器模式的动机,掌握该模式的结构;2、能够利用适配器模式解决实际问题。 [实验任务一]:双向适配器实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。实验要求:1. 画出对应的类图;2.提交源代码;3.注意编......
  • spine 3.8.75 导出到unity
    下载spine-unity运行库spine-unity-3.8-2021.unitypackagehttp://zh.esotericsoftware.com/spine-unity-download/?eqid=97a447270004c44a0000000564268a631.导出文件把  (1).atlas修改成 (1).atlas.txt2.JSON文件版本号"spine":"3.8.75"修改成"spine":&quo......
  • Unity版本使用情况统计(更新至2023年10月)
    本期UWA发布的内容是第十三期Unity版本使用统计,统计周期为2023年5月至2023年10月,数据来源于UWA网站(www.uwa4d.com)性能诊断提测的项目。希望给Unity开发者提供相关的行业趋势,了解近半年来哪些Unity版本的使用概率更高。2023年5月-2023年10月版本分布 以近半年的数据统计来......
  • Wpf 第三方Mvvm包(mvvmLight/Microsoft.Toolkit.Mvvm/CommunityToolkit.Mvvm)
    十年河东,十年河西,莫欺少年穷学无止境,精益求精 mvvmLight和 Microsoft.Toolkit.Mvvm已被Nuget弃用且不再更新,在此不作说明CommunityToolkit.Mvvm是NetCore版本引用包,详情参考:WPFMVVM框架:CommunityToolkit.Mvvm包使用介绍1、wpf项目中使用 CommunityToolkit.Mvvm(NetCo......
  • 飞腾E2000板载以太网适配
    飞腾E2000板载以太网适配e20005.4.18macbyt85211.设备树移植2.MACB驱动移植3.网络连通性调试3-1.MACB驱动环回测试3-2.YT8521PHY工作模式及电压确认3-3.YT8521PHY环回测试3-4.YT8521PHYtxdelay调整飞腾E2000嵌入式板卡的MAC芯片对应linux通用macb驱动,外接YT8521PHY......
  • Unity DOTS Component概述
    最近DOTS终于发布了正式的版本,我们来分享以下DOTS里面地几个关键概念,方便大家上手学习掌握UnityDOTS开发。UnityDOTS中Entity作为实体不直接去存放数据,而是将数据以一个个的组件为载体来存放起来。每个Entity会得到一些不同的ComponentData的组合,这些组合代表着不同的Entity......
  • Unity DOTS World Entity ArchType Component EntityManager System概述
    最近DOTS终于发布了正式的版本,我们来分享以下DOTS里面地几个关键概念,方便大家上手学习掌握UnityDOTS开发。UnityDOTS中所有的Entities都是被放到World世界中。每个Entity在它所在的World里面有唯一不同的ID号来区分。DOTS项目中可以同时有多个World。每个World有一个Entity......
  • 多平台小程序编译适配,超级App的基建利器?
    随着科技的飞速发展,我们正迅速进入一个以数字化为主导的时代。 在这个时代中,通信、小程序、快应用、云服务器等平台连接类软件如火如荼的发展,手机、手表、AR/VR眼镜等智能移动穿戴设备迅速的升级迭代,5G、芯片、算力等基础设施也以月的速度在全球竞相发布捷报。 与用户生......
  • 【unity】鼠标拖拽实现摄像机围绕物体视角旋转(物体不动、摄像机旋转)
    直接贴效果和源码了usingUnityEngine;publicclassStagitCamController:MonoBehaviour{//旋转的目标点publicTransformtarget;publicfloatdistance=5.0f;publicVector3startRotation;publicfloatxSpeed=120.0f;publicf......