关于Unity中的屏幕适配
一、Game视图的屏幕分辨率可以先自定义添加,供以后选择,以下是手游经常用到的分辨率:
1.1136X640,iPhone5
2.1920X1080,横屏,主流游戏都是这个分辨率
3.1080X1920,竖屏
4.960X640,横屏iPhone4
5.640X960,竖屏iPhone
6.768X1024,ipad
7.800X480
8.480X800
Screen Space(Overlay)模式下的Canvas节点的Rect Transform组件的Width和Height是随着Game视图的分辨率的选择而改变的,是不能手写修改的,但是其子节点的Rect Transform组件是可以改变的。
二、Image节点的Rect Transform组件是可以修改的,其中:
1.PosX,PosY,PosZ(0)表示Image节点在父节点下的相对坐标,以父节点的菊花为参照原点(0,0),可以修改菊花的位置,这时候PosX,PosY也就自动改变了。
2.ScaleX,ScaleY,ScaleZ表示Image节点的缩放,可以让节点随着自己设置的值拉伸收缩
3.Pivot:中心点,支点。定义图片的中心点在哪里,就是相当于Cocos2d里面的精灵的锚点,这个点是受PosX,Pos影响的,也就是说,这个点到父节点原点的距离就是PosX,PosY。Pivot(0,0)在左下角,Pivot(1,1)在右上角,Pivot(0.5,0.5)在中心
4.Rotation旋转,可以选择Scene视图的2D按钮来让视图更好调整。
5.那朵菊花,也就是父节点的原点,可以在父节点的范围内随意移动的,这个只能在子节点的Inspector面板里面设置因为父节点Canvas是不能更改Rect transform组件的。
菊花不能超过父节点的范围,它是相对于父亲的百分比来算的,这样改变父节点的大小,菊花还是在哪个位置。
其中Anchors属性(相对父亲的停靠点),是和左上角的图案配套来设置父节点的菊花位置的。Anchors min max 表示四小朵菊花瓣的位置,四小朵菊花瓣组成了大菊花。目前只知道4朵花瓣和在一起可以表示父节点的原点,分开的四朵花瓣的作用还没有搞清楚。
除了那9个代表性的菊花的位置外,还可以自己设置菊花的位置,可以占用某一列下来的百分比,或者某一行的百分比,通过用鼠标拖拽在Scene视图里面移动可以看到视图中有百分比数值在变化,只要看到自己想要的停下了就行了。
三、菊花的作用:
一个父节点下面有很多的子节点,每个子节点都有自己相对于父节点的菊花,也就是说Image子节点的菊花可以在左上角,然后它把自己的Pivot设置成(0,1),这样,再把自己的PosX,PosY,设置成(0,0),就可以把Image节点附着到父节点的左上角了。
其他的子节点可以根据自己想附着的位置而设置自己的菊花位置。
四、屏幕适配准备工作:
创建一个Canvas节点
设置Canvas节点的Canvas组件的Render Mode为Screen Space(Overlay)
创建一个Image类型的UI节点在Canvas父节点下面
设置图片的Texture Type为Sprite
把图片拖进Image节点的Source Image属性下面
点击Image节点的Set Native Size
设置Canvas节点的Canvas Scaler组件的UI Scale Mode为Scale With Screen Size
设置Canvas节点的Canvas Scaler组件的Reference Resolution为640X960,这个是美术的设计分辨率
设置Image的ScaleX,ScaleY,数值为640/512,640是640X960的宽,512是图片的宽度,让背景图片尽可能地覆盖Canvas,超出一点也没关系。
做背景图的时候要长一点,这样就可以适配所以分辨率的要求,不然如果是按照宽度适配的话,上下会不断改变,而按照高度适配的话,左右会不断改变,我们一般选择用宽度适配,
也就是设置Canvas节点的Canvas Scaler组件的UI Scale Mode为Scale With Screen Size,设置Canvas节点的Canvas Scaler组件的Match拉条,拉到Width,所以美术要做高背景图。
五、屏幕适配开始解决方案:
一个Canvas下面有很多的子节点,每个子节点的宽高设置为0,然后每个子节点自己的子节点的菊花就不能移动,然后改变Canvas子节点的菊花位置到中上位置,这样子节点的子节点就会被固定在Canvas中上的位置,不管怎么改变Game视图的分辨率,Canvas怎么变化,子节点的子节点还是在中上的位置,这就是屏幕适配。
面试会问UGUI的屏幕适配策略
关于Unity中的屏幕适配的更多相关文章
- Android 开发中的屏幕适配技术详解
本文主要介绍Android开发中比较头疼繁琐的一个问题-屏幕适配问题.主要从适配原因.基本核心概念.适配方法等方面介详细 介绍从而是的深入或者进一步对Android屏幕适配技术的掌握和理解. 真题园网 ...
- 在Unity中实现屏幕空间阴影(2)
参考文章: https://www.imgtec.com/blog/implementing-fast-ray-traced-soft-shadows-in-a-game-engine/ 完成的工程: ...
- 在Unity中实现屏幕空间反射Screen Space Reflection(1)
本篇文章我会介绍一下我自己在Unity中实现的SSR效果 出发点是理解SSR效果的原理,因此最终效果不是非常完美的(代码都是够用就行),但是从学习的角度来说足以学习到SSR中的核心算法. 如果对核心算 ...
- 【Unity笔记】UGUI中Canvas屏幕适配
1.通过RectTransform中的Anchors和Pivot来进行控件和窗体的布局适配. Anchors控制当前Panel相对于父窗体的布局位置,可以设置为居中或者左上角,当父窗体拉伸的时候当前P ...
- 在Unity中实现屏幕空间阴影(1)
接着上篇文章,我们实现了SSR效果. 其中的在屏幕空间进行光线追踪的方法是通用的.借此我们再实现一种屏幕空间的效果,即屏幕空间阴影. 文中的图片来自Catlike coding http://catl ...
- 在Unity中实现屏幕空间反射Screen Space Reflection(4)
第四部分讲一下如何在2D屏幕空间步进光线. http://casual-effects.blogspot.com/2014/08/screen-space-ray-tracing.html 中的代码感 ...
- phaser小游戏框架学习中的屏幕适配
这篇博客主要讲一下上一篇博客的右侧和底部出现的问题.就是页面会有偏移量.说一下这个产生的原因吧. 一开始在构建html页面的时候,习惯性的在页面中加了 <meta name="view ...
- 在Unity中实现屏幕空间反射Screen Space Reflection(3)
本篇讲一下相交检测的优化.有两个措施. 线段相交检测 之前的检测都是检测光线的终点是否在物体内.我们可以尝试检测光线的线段是否与物体相交. 比如说有一个非常薄的物体,光线差不多垂直于它的表面.如果用普 ...
- 在Unity中实现屏幕空间反射Screen Space Reflection(2)
traceRay函数 在上一篇中,我们有如下签名的traceRay函数 bool traceRay(float3 start, float3 direction, out float2 hitPixe ...
随机推荐
- wait/waitpid函数与僵尸进程、fork 2 times
一.僵尸进程 当子进程退出的时候,内核会向父进程发送SIGCHLD信号,子进程的退出是个异步事件(子进程可以在父进程运行的任何时刻终止) 子进程退出时,内核将子进程置为僵尸状态,这个进程称为僵尸进程, ...
- Python直接赋值、浅拷贝和深度拷贝解析
直接赋值:其实就是对象的引用(别名). 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象. 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象 ...
- 使用Xfire发布WebService接口遇到的问题:
问题一: log4j:WARN No appenders could be found for logger (org.codehaus.xfire.transport.DefaultTranspor ...
- mysql 再查询结果的基础上查询(子查询)
SELECT A.wx_name, A.wx_litpic, B . * FROM ( SELECT uid, COUNT( * ) AS daticishu FROM statements , ) ...
- new FormData() - FormData对象的作用及用法
一.概述 FormData 对象的使用: 1.用一些键值对来模拟一系列表单控件:即把form中所有表单元素的name与value组装成 一个queryString 2. 异步上传二进制文件. 二.使用 ...
- Spring AOP之Introduction(@DeclareParents)简介(转)
Spring的文档上对Introduction这个概念和相关的注解@DeclareParents作了如下介绍: Introductions (known as inter-type declarati ...
- Linux 共享库(动态库)
Linux 系统上有两类根本不同的 Linux 可执行程序.第一类是静态链接的可执行程序.静态可执行程序包含执行所需的所有函数 — 换句话说,它们是“完整的”.因为这一原因,静态可执行程序不依赖任何外 ...
- php教程之php空白页的原因及解决方法
php中出现空白页的原因及解决方法汇总. 很多程序员在进行php开发的时候都遇到过出现空白页的请,综合分析来说,在php编程中出现空白页面可能是由以下几个原因造成的: 1.逻辑错误逻辑错误是最难排除的 ...
- Oracle PLSQL Demo - 17.游标查询个别字段(非整表)
declare Type ref_cur_variable IS REF cursor; cur_variable ref_cur_variable; v_empno scott.emp.empno% ...
- centos启动zookeeper
切换到zookeeper的bin目录下,执行 ./zkServer.sh start