Unity UI布局与适配
目录
- Canvas(画布)
- Basic Layout(基础布局)
- 实例
1.画布(Canvas)
画布是所有UI元素的父物体,任何UI元素都存在于画布之上。画布上所有UI元素的绘制顺序是根据其在场景中的层级结构(Hierarchy)中的位置,从上到下,从第一个子物体到最后一个这样的顺序绘制的。UI的显示顺序也由此决定,后面绘制的UI元素更靠前。
渲染模式
画布有一个渲染模式(Render Mode)设置,可用于使其在屏幕空间或世界空间中渲染。
第一种模式叫Screen Space - Overlay。此渲染模式将UI元素放置在场景顶部渲染的屏幕上,也就是说UI部分永远覆盖其他画面部分。如果屏幕调整大小或更改分辨率,画布将自动更改大小以与此匹配。

第二种模式叫Screen Space - Camera。这种模式上一种类似,区别是画布是绘制在一个与摄影机固定距离的平面上,如果该相机设置为透视,UI元素将使用透视进行渲染,并且透视失真的量可以由相机的视野(FOV)控制。如果调整屏幕大小、更改分辨率或相机截锥体更改,画布也会自动更改大小以匹配。这种模式通常用来实现3D物体出现在UI元素之上的效果。如下图所示。

第三种模式叫World Space。在这种渲染模式下,画布将与场景中的任何其他对象一样在Game View中显示。画布的大小可以使用Rect变换手动设置,UI元素将根据画布在场景放置的位置进行渲染。这对表现设计本意是游戏场景的一部分的UI非常有用。这也被称为“diegetic接口”。
2.Basic Layout(基础布局)
每一种UI元素都可以视作一个矩形,可以通过工具栏中的矩形工具
在场景中进行操作。可以进行平移,旋转和缩放。与其他工具一样,矩形工具使用工具栏中当前设置的“Pivot”和“空间”。在对UI操作时,最好设置为Pivot和Local。

2.1 Rect Transform
UI元素中使用Rect Transform组件取代Transform。它和Transform一样具有位置、旋转和缩放,不同点是它也具有宽度和高度,用于指定矩形的尺寸。使用矩形工具更改对象的大小时,通常对于三维对象或二维对象中的Sprites,它将更改局部比例(也就是Scale)。但是,当它用于带有Rect Transform的对象时,它将改变其宽度和高度,保持局部比例不变。此调整大小不会影响字体大小、切片图像的边框等。
2.2 Pivot
旋转、大小和缩放修改围绕中心轴进行,因此中心轴的位置会影响旋转、调整大小或缩放的结果。当工具栏“Pivot”按钮设置为“Pivot”模式时,可以在场景视图中移动矩形变换的轴。
2.3 Anchors
锚点是Rect Transform中的一个布局概念。锚定在场景视图中显示为四个小三角形控制柄。Unity官方文档中有比较形象的动图示例

如上图所示,点击Anchor旁边的箭头,出现了下面两行。Min 对应于场景视图中左下角的控制柄,Max 对应于右上角的控制柄。
当所有控制柄都在一起时(如下图所示),显示的字段是Pos X、Pos Y、Width和Height。Pos X和Pos Y值表示枢轴相对于锚的位置。

当控制柄分离时,显示的字段是可以改变为左和右、上和下。如果控制柄水平分开,则使用左和右字段取代Pos X和Width,表示矩形的左右侧距离两边控制柄的距离;如果控制柄垂直分开,则使用上和下字段取代Pos Y和Height, 表示矩形的上下侧距离两边控制柄的距离。
3. 实例
Unity官方文档中给出了调整布局适应不同的分辨率的一个简单实例。
Unity UI布局与适配的更多相关文章
- iOS-屏幕适配-UI布局
iOS 屏幕适配:autoResizing autoLayout和sizeClass 一.图片解说 -------------------------------------------------- ...
- 关于如何写UI及屏幕适配的一些技巧
因为公司开启了一个新的iOS项目, 所以近期比较忙, 没有更新博客,今天打算总结一下关于UI布局及屏幕适配的一些实战技巧,尤其使用纯代码,会对提升效率及代码易于维护等方面有明显帮助,这里提到的没有使用 ...
- iOS开发~UI布局(三)深入理解autolayout
一.概要 通过对iOS8界面布局的学习和总结,发现autolayout才是主角,autolayout是iOS6引入的新特性,当时还粗浅的学习了下,可是没有真正应用到项目中.随着iOS设备尺寸逐渐碎片化 ...
- iOS开发~UI布局(二)storyboard中autolayout和size class的使用详解
一.概要:前一篇初步的描述了size class的概念,那么实际中如何使用呢,下面两个问题是我们一定会遇到的: 1.Xcode6中增加了size class,在storyboard中如何使用? 2.a ...
- iOS开发~UI布局(一)初探Size Class
随着iOS8系统的发布,一个全新的页面UI布局概念出现,这个新特性将颠覆包括iOS7及之前版本的UI布局方式,这个新特性就是Size Class.Size Class配合Auto Layout可以解决 ...
- iOS8开发~UI布局(二)storyboard中autolayout和size class的使用具体解释
一.概要:前一篇初步的描写叙述了size class的概念,那么实际中怎样使用呢,以下两个问题是我们一定会遇到的: 1.Xcode6中添加了size class,在storyboard中怎样使用? 2 ...
- Unity UI 基础【译】
https://unity3d.com/cn/learn/tutorials/topics/best-practices/fundamentals-unity-ui?playlist=30089 理解 ...
- Unity UI性能优化技巧
本文将介绍一些提升Unity UI性能的技巧.更多优化技巧,可以观看Unity工程师Ian Dundore在Unite Europe 2017的演讲<使用Unity性能提升技巧>. 1.划 ...
- 如何写UI及屏幕适配的一些技巧
总结一下关于UI布局及屏幕适配的一些实战技巧,尤其使用纯代码,会对提升效率及代码易于维护等方面有明显帮助,这里提到的没有使用任何Xib, 如果不是在外包公司,也推荐大家多使用甚至完全使用纯代码布局UI ...
- iOS 8 UI布局 AutoLayout及SizeClass(二)
一.新特性Size Class介绍 随着iOS8系统的公布,一个全新的页面UI布局概念出现,这个新特性将颠覆包含iOS7及之前版本号的UI布局方式,这个新特性就是Size Class. Size Cl ...
随机推荐
- Git 工作常用操作
撤回commit 上一次提交的代码 git reset --soft HEAD^ HEAD^的意思是上一个版本,也可以写成HEAD~1 如果你进行了2次commit,想都撤回,可以使用HEAD~2 g ...
- 用简单的代码,将小程序文件直传到腾讯云COS实践
简介 本文介绍如何不依赖 SDK,用简单的代码,在小程序直传文件到腾讯云COS的存储桶. 注意: 本文档内容基于 XML 版本的 API. 前期条件 登录 对象存储控制台 ,创建存储桶,设置 Buck ...
- lg8862题解
脑抽了,一开始想着扫描线然后用线段树求历史最大值.
- java中的批量导入,批量更新数据
批量插入 数据,提高效率 Dao层 int insertBatch(List<HealthImport> list); xml文件 <insert id="insertBa ...
- C#定时任务(Timer)
新建Timer类 using BaseAsset.Data.Infrastructure; using BaseAsset.Data.Repositories; using BaseAsset.Ent ...
- 整合mybatis实现简单的增删改查
mybatis配置相关代码 配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE conf ...
- tomcat的安装以及环境配置
1.Tomcat的下载地址:http://tomcat.apache.org/ Tomcat是开放源代码的WEB服务器,安装时,只需解压压缩包即可 2.环境变量的配置 1>新建系统变量CATAL ...
- Flash、EEPROM、SRAM的区别与理解
Flash.EEPROM.SRAM的区别与理解1. Flash.EEPROM.SRAM的区别(1) Flash存储器Flash适用于速度要求高.容量要求大.掉电时要求数据不丢失的场合. (2) EEP ...
- python -m pip install --upgrade pip 解决升级不成功问题
使用pip 提示更新: You are using pip version 18.1, however version 20.0.2 is available. You should consider ...
- 将map转为Bean的工具类 BeanUtil
Map<String,Object> pbclwhMainMap = (Map<String,Object>)param.get("pbclwhMain") ...