目录

  1. Canvas(画布)
  2. Basic Layout(基础布局)
  3. 实例

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布局与适配的更多相关文章

  1. iOS-屏幕适配-UI布局

    iOS 屏幕适配:autoResizing autoLayout和sizeClass 一.图片解说 -------------------------------------------------- ...

  2. 关于如何写UI及屏幕适配的一些技巧

    因为公司开启了一个新的iOS项目, 所以近期比较忙, 没有更新博客,今天打算总结一下关于UI布局及屏幕适配的一些实战技巧,尤其使用纯代码,会对提升效率及代码易于维护等方面有明显帮助,这里提到的没有使用 ...

  3. iOS开发~UI布局(三)深入理解autolayout

    一.概要 通过对iOS8界面布局的学习和总结,发现autolayout才是主角,autolayout是iOS6引入的新特性,当时还粗浅的学习了下,可是没有真正应用到项目中.随着iOS设备尺寸逐渐碎片化 ...

  4. iOS开发~UI布局(二)storyboard中autolayout和size class的使用详解

    一.概要:前一篇初步的描述了size class的概念,那么实际中如何使用呢,下面两个问题是我们一定会遇到的: 1.Xcode6中增加了size class,在storyboard中如何使用? 2.a ...

  5. iOS开发~UI布局(一)初探Size Class

    随着iOS8系统的发布,一个全新的页面UI布局概念出现,这个新特性将颠覆包括iOS7及之前版本的UI布局方式,这个新特性就是Size Class.Size Class配合Auto Layout可以解决 ...

  6. iOS8开发~UI布局(二)storyboard中autolayout和size class的使用具体解释

    一.概要:前一篇初步的描写叙述了size class的概念,那么实际中怎样使用呢,以下两个问题是我们一定会遇到的: 1.Xcode6中添加了size class,在storyboard中怎样使用? 2 ...

  7. Unity UI 基础【译】

    https://unity3d.com/cn/learn/tutorials/topics/best-practices/fundamentals-unity-ui?playlist=30089 理解 ...

  8. Unity UI性能优化技巧

    本文将介绍一些提升Unity UI性能的技巧.更多优化技巧,可以观看Unity工程师Ian Dundore在Unite Europe 2017的演讲<使用Unity性能提升技巧>. 1.划 ...

  9. 如何写UI及屏幕适配的一些技巧

    总结一下关于UI布局及屏幕适配的一些实战技巧,尤其使用纯代码,会对提升效率及代码易于维护等方面有明显帮助,这里提到的没有使用任何Xib, 如果不是在外包公司,也推荐大家多使用甚至完全使用纯代码布局UI ...

  10. iOS 8 UI布局 AutoLayout及SizeClass(二)

    一.新特性Size Class介绍 随着iOS8系统的公布,一个全新的页面UI布局概念出现,这个新特性将颠覆包含iOS7及之前版本号的UI布局方式,这个新特性就是Size Class. Size Cl ...

随机推荐

  1. 本地Map缓存

    package com.cars.forwardservice.controller;import org.springframework.stereotype.Controller;import o ...

  2. 打卡node day04--express-get.post.路由

    1.基本使用 npm i express 2.请求 get: post: express 不能直接解析请求体,所以需要第三方插件 ---->body-parser 使用 npm install ...

  3. 常用的accept 属性值

    *.3gpp audio/3gpp, video/3gpp 3GPP Audio/Video *.ac3 audio/ac3 AC3 Audio *.asf allpication/vnd.ms-as ...

  4. linux离线安装gcc 和g++

    1.先到有网的机器上下载依赖包 sudo yum install --downloadonly --downloaddir=/home/mjb/soft/gcc gcc sudo yum instal ...

  5. Coursera Programming Languages, Part C 华盛顿大学 Week 2

    week 2 我们采用一种新的视角来对比 FP 与 OOP,即将问题分解 (decompose) 与实现 (implement) 的方式 OOP Versus Functional Decomposi ...

  6. 「SOL」Hamiltonian Cycle (AtCoder)

    原来一般的四度图也没法快速构造哈密顿回路 QwQ # 题面 给定质数 \(P\) 和正整数 \(a,b\),构造一个长为 \(P\) 的数列 \(G=(g_1,g_2,\dots,g_P)\),满足: ...

  7. 突然连不上虚拟机,本地网络里没有VMnet8

    今天打开虚拟机,突然发现无法ping通网络了,但是能ping通虚拟机ip,打开我的window的网络适配器发现居然没有vmnet 8虚拟网卡了,防火墙什么的都设置好了,仍然不行,后来发现,在网络和共享 ...

  8. Dapper显示

    <h2>商品列表</h2> <a id="a">导出列表</a> <table class="table table ...

  9. python 操作MongoDB pymongo

    python操作MongoDB 1.安装pymongo pip install pymongo 2.连接数据库 启动mongodb服务: 包含mongod.exe文件夹bin :shift+鼠标右键, ...

  10. JS中Promise

    Promise的作用: Promise是异步微任务,解决了异步多层嵌套回调的问题,让代码的可读性更高,更容易维护. Promise如何使用: Promise是ES6提供的一个构造函数,可以使用Prom ...