Unity如何移动端怎么做屏幕适配配

导读:一种Unity2D多分辨率屏幕适配方案先说明一些基本的概念:,1.屏幕的宽高比AspectRatio=屏幕宽度/屏幕高度,当摄像机orthographicSize属性值等于当前屏幕高度单位的一半时,摄像机大小正好与屏幕大小相等,注意这里提到的是屏幕单位高度的一半,如果我们的游戏屏幕有640像素高,摄像机大小刚好与屏幕大小相等,那摄像机的宽度是如何确定的呢?答案就是我们最前面提到的屏幕宽高比,U一种Unity2D多分辨率屏幕适配方案 先说明一些基本的概念: 1.屏幕的宽高比Aspect Ratio = 屏幕宽度/屏幕高度 2.Unity2D中摄像机镜头的尺寸决定了我们实际看到游戏内容的多少,在编辑器中我们可以通过调整摄像机Camera的orthographicSize属性值来调整摄像机的大小。如下图所示,当摄像机orthographicSize属性值等于当前屏幕高度单位的一半时,摄像机大小正好与屏幕大小相等。注意这里提到的是屏幕单位高度的一半,这个数值是经过像素到单位比即Pixels To Units换算的,Unity2D中这个比例的默认值是100,即100像素等于1单位。如果我们的游戏屏幕有640像素高,那么实际换算成单位高度则是6.4个单位,当我们摄像机的orthographicSize值是3.2时,摄像机大小刚好与屏幕大小相等。
(可以通过此选项调整每张图片的像素单位比) 看到这里你可能会发出疑问,Unity编辑器中只能直接调整摄像机的高度,那摄像机的宽度是如何确定的呢?答案就是我们最前面提到的屏幕宽高比。Unity会根据当前屏幕实际的宽高比和摄像机的orthographicSize值来计算出摄像机的宽度值,即: 摄像机实际宽度 = 摄像机orthographicSize * 2 * 屏幕宽高比 也即是 摄像机实际宽度 = 摄像机高度 * 屏幕宽高比 我举个例子说明一下,iPhone4的屏幕像素为640*960,宽高比为2:3,假设Pixels To Units值为100,那么如果设摄像机高度size值为4.8,那么摄像机实际宽度按照公式算出6.4,刚好就是屏幕的单位宽度。 ---------------------------------------渐入佳境的分割线------------------------------------------ 好了,讲了以上的东西我们就知道为何我们的游戏会在不同的屏幕分辨率的设备上有不同的显示了。 不同的屏幕分辨率,相同的摄像机orthographicSize值会产生不同的摄像机尺寸,不同的摄像机尺寸导致实际显示的游戏内容的不同。 接下来我再提出两个概念,为了方便后文的说明: 1.游戏有效内容,指游戏中一定需要完整显示在屏幕上的内容; 2.游戏实际内容,指全部的游戏内容,包括有效内容和主要是为了适配多分辨率的或其他不重要的目的而增加的内容。 我们的开发一般都会选择在一个固定的设计分辨率上进行,比如常用的iOS竖屏游戏设计分辨率640*960,我们就以这个设计分辨率为例。通常情况下,设计分辨率尺寸就是我们游戏有效内容的尺寸。 采用这个分辨率,我们将摄像机的orthographicSize值设为4.8。假设我们不做任何多分辨率的适配处理,使我们游戏的有效内容区域和实际内容区域尺寸相同,都为6.4*9.6(已经做过像素到单位的换算,下同),让这个游戏运行在一款iPhone5设备上(即屏幕是640*1136)时,我们来看看会发生什么情况。 为了更好的说明,我们先设变量:
游戏有效内容尺寸为gameValidContentSize
游戏实际内容尺寸为gameContentSize
摄像机尺寸为cameraSize
实际屏幕尺寸为screenSize
屏幕宽高比为aspectRatio
接着开始计算:
orthographicSize = 4.8
aspectRatio = 640/1136 = 9/16
cameraSize.height = 摄像机orthographicSize * 2 = 4.8 * 2 = 9.6
cameraSize.width = cameraSize.height * aspectRatio = 9.6 * 9 /16 = 5.4
根据计算,我们得到实际摄像机的宽度为5.4,而游戏有效内容宽度是6.4,摄像机宽度小于游戏有效内容宽度,即cameraSize.width < gameValidContentSize.width = gameContentSize.width,这时游戏内容被摄像机裁减! 以下以我做的一个小游戏为例子,我们可以更清楚的看到这个问题: 第一张是在640*960的设备上运行时的效果,一切正常。第二张是在640*1136的设备上运行的效果,可以看到游戏内容被剪得很明显,右上角的按钮都快没有了。
如何解决这个问题呢?最直接的想法是,如果我们的游戏在640*1136屏幕的设备上,摄像机宽度依然保持是6.4,那肯定就不会剪切了。为了做到这一点,我们必须在运行时来调整camera的orthographicSize值。方法很简单,还是套用上面讲到的公式:
aspectRatio = 9/16
为了使cameraSize.width = 6.4,我们计算
cameraSize.height = cameraSize.width/aspectRatio = 6.4 * 16 / 9 (因为除不尽,后面就不继续写了)
camera的orthographicSize = cameraSize.height / 2 约=5.69
我们再一次运行游戏,动态修改camera的orthographicSize值为5.69,可以看到:
宽的方面是完全显示出来了,可是上下都出现了的“黑边”(这里是蓝边,呵呵)。这是因为摄像机的高度已经大于了游戏内容的高度,所以自然会出现没有内容的区域,即“黑边”。为了解决这个问题,我们就需要给游戏增加上下边,直接上和黑边同尺寸的图是一种方法,但是还有一种更简易的办法,直接将游戏背景放大一些,以盖住黑边!这个游戏比较简单,我们就用这个简易的方法,我们将游戏背景放大到1.3倍,如下图: 包含总结汇报、党团工作、专业文献、人文社科、旅游景点、应用文书、工作范文以及课题:一种Unity2D多分辨率屏幕适配方案等内容。本文共2页
相关内容搜索说明:&&unity 很好用的屏幕适配是超级好用的(Unity's nice screen adaptation is super easy to use)
文件列表:
屏幕适配.pdf, 235608 ,
近期下载者:
相关文件:当前位置: >
Android手机屏幕自适应
时间: 08:37 来源:Unity之家 作者:unity.jb51.net 浏览:
android手机屏幕分辨率五花八门,导致开发时不好把握,还好各个引擎对这个屏幕分辨率问题都有较好的处理方式;unity3D 也为我们提供了一个不错的解决方案。在Unity3D 进行 android 游戏开发时,对于不同分辨率下的显示效果就像是摄像机的自动平移了一般,看了不少游戏,对于 Unity3D 开发 android 游戏貌似都没有做相应的屏幕分辨率的处理,而是随摄像机的自动移动,把场景做大些不至于出现空白背景。其实 Unity3D 开发3D游戏,对于不同的分辨率,我们只需要设置 1 个唯一的屏幕显示区域比(说白了就是宽高比),这样显示区域就不会随分辨率的改变而拉升。上代码:using UnityEusing System.Cpublic class Resolution : MonoBehaviour {&&& public Camera mainC&&& void Start()&&& {&&&&&&& //Screen.SetResolution(, true, 60);&&&&&&& mainCamera = Camera.mainC&&&&&&& //& float screenAspect = 1280 / 720;& 现在android手机的主流分辨。&&&&&&& //& mainCamera.aspect ---&& 摄像机的长宽比(宽度除以高度)&&&&&&& mainCamera.aspect = 1.78f;&&& }}把此代码脚本绑定在& MainCamera 上就OK了,这样就不会导致不同分辨率下屏幕显示区域大小不一的问题!
(责任编辑:脚印)
免责声明:Unity之家部分内容来源于互联网,如有侵权,请联系我们,本站将立即进行处理。
猜你也喜欢看这些 ??????
其他类型的Unity编程 ??????第1章 课程简介
第2章 MVC 结构
第3章 游戏 Controller 层初步搭建...
第4章 游戏 View 层搭建
第5章 游戏 Model 层搭建
第6章 加入插值(补间)动画
第7章 课程总结
下一节课程: 完善View层布局_总结课程_介绍架构的重要性
3 秒后播放下一节
请输入问题内容...
请输入笔记内容...
第二章案例代码
你发的评论可能会是问题?是否将他发到问答中
Copyright (C) 2018 imooc.com All Rights Reserved | 京ICP备 号-2
本次提问将花费2个积分
你的积分不足,无法发表
本次提问将花费2个积分
继续发表请点击 "确定"没有更多推荐了,
不良信息举报
举报内容:
Unity NGUI屏幕适配
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!}

我要回帖

更多关于 怎么做不同屏幕适配 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信