Canvas是所有ui元素的父物体。

当添加一个Button类型的GameObject后,在"Hierarch"窗口中自动添加了一个Canvas,以及EventSystem。

在Canvas的Render Mode中有三个选择:

1、Screen Space - Overlay 屏幕最上层,主要是2D效果。
2、Screen Space - Camera 绑定摄像机,可以实现3D效果。
3、World Space 世界空间,让UI变成场景中的一个物体。

如果选择"Screen Space - Overlay", Canvas的"Rect Transform"项被锁定,此时,屏幕有多大,Canvas就有多大。

另外在还可以让在Canvas中的Button自适应。选中Button,在"Inspector"窗口中的"Rect Transform",通过按着alt键把Button固定在相对于Canvas的某个位置,当Scene窗口大小变化,Canvas也随着变化,其中的Button也始终固定在Canvas的某个区域,呈现出自适应的效果。

勾选"Pixel Perfect",在Canvas中的模糊效果消失,变得相对清晰。

"Sort Order"的值用来决定不同的Canvas的层级效果。

如果选择"Screen Space - Camera",UI跟着摄像机走。

把"Hierarchy"中的"Main Camera"拖动到"Render Camera"属性框上。

选中Button,能实现一些三维效果,而看到三维显示效果的前提是:Main Camera的"Projection"的属性值是"Perspective"。

如果选择"World Space",Canvas就被作为Game Object,成为场景中的一个物体。利用这一点,可以很方便地添加跟随物体的UI。

在Canvas的"Canvas Scaler(Script)"中, Dynamic Pixels Per属性用来调整字体的大小,Reference Pixels Per用来调整边框的粗细。选择Ui Scale Mode的不同项,会出现不同的属性供设置。

Canvas的"Graphic Raycaster(Script)"用来调整射线。

Unity3D实践系列10, Canvas画布的创建和使用的更多相关文章

  1. Unity3D实践系列04, 脚本的生命周期

    Unity3D脚本生命周期是指从脚本的最初唤醒到脚本最终销毁的整个过程.生命周期的各个方法被封装到了MonoBehaviour类中.具体来说如下: 1.In Editor Mode 编辑模式 当在编辑 ...

  2. Unity3D实践系列01,创建项目

    下载并安装Unity5软件客户端. 打开软件,注册Unity帐号,并用注册帐号登录. 点击"创建Project"按钮. 把项目命名为"My First Unity Pro ...

  3. Unity3D实践系列06,球体撞击物体游戏

    本篇实现一个球体在固定区域移动撞击Cube的游戏. 首先有1个Plane当作地面,1个Sphere当作球体,4个Cube当作墙,12个Cube当作被撞击物体,另外还有球体的撞击计算,在撞击的过程适时显 ...

  4. Unity3D实践系列11, 组件的添加和访问

    当把一个脚本附加到一个GameObject上的时候,这个GameObject就有了脚本组件. 通过GameObject的属性获取组件 比如如下: [RequireComponent(typeof(Ri ...

  5. Unity3D实践系列08, MonoBehaviour类的各种触发事件

    在脚本的生命周期中,有Awake, Start, FixedUpdate, Update, LateUpdate等方法,其实这些属于MonoBehaviour类的事件响应方法,是MonoBehavio ...

  6. Unity3D实践系列07,组件的启用或禁用开关,物体的的可见或不可见开关,以及相应事件

    创建一个Unity项目. 在"Project"窗口中,在"Asserts"中,添加"_MyScene"文件夹. 点击"File&q ...

  7. Unity3D实践系列03,使用Visual Studio编写脚本与调试

    在Unity3D中,只有把脚本赋予Scene中的GameObject,脚本才会得以执行. 添加Camera类型的GameObject. Unity3D默认使用"MonoDevelop&quo ...

  8. Unity3D实践系列09, 物理引擎与碰撞检测

    在Unity3D中,一个物体通常包含一个Collider和一个Rigidbody.Collider是碰撞体,一个物体是Collider,才可以进行碰撞检测.Collider组件中的"Is T ...

  9. Unity3D实践系列05,为GameObject添加额外属性

    在Unity中,通常通过脚本为GameObject添加额外的属性.具体有2种方式:一种是通过硬编码为脚本字段赋值,另一种是通过反射在运行时给脚本字段赋值. 脚本通过字段硬编码为GameObject添加 ...

随机推荐

  1. Linux DRM KMS 驱动简介【转】

    转自:https://blog.csdn.net/yangkuanqaz85988/article/details/48689521 Whoops,上次写完<Linux DRM Graphic ...

  2. 【驱动】input子系统整体流程全面分析(触摸屏驱动为例)【转】

    转自:http://www.cnblogs.com/lcw/p/3294356.html input输入子系统整体流程 input子系统在内核中的实现,包括输入子系统(Input Core),事件处理 ...

  3. 微信小程序调用接口返回数据或提交数据

    由于小程序发起网络请求需要通过 wx.request 文档地址 https://mp.weixin.qq.com/debug/wxadoc/dev/api/network-request.html 习 ...

  4. redis 配置文件翻译

    2014年6月24日 17:29:11 include  如果有其它配置文件,可以使用 include 指令 ####通用配置 daemonize  默认的redis不会以守护进程运行,需要这样的话可 ...

  5. php里获取第一个中文首字母并排序

    需求里结算首页需要按门店的首字母A-Z排序.我的数据结构原本是这样的: Array ( [0] => Array ( [sid] => 2885842 [recetcstoredpay] ...

  6. input标签的事件汇总

    我在做一个注册时用到了,在网上查的,比较碎.就汇总了下, 1.onfocus  当input 获取到焦点时触发 2.onblur  当input失去焦点时触发,注意:这个事件触发的前提是已经获取了焦点 ...

  7. Atom组件

    Atom组件 最近用Atom写博客比较多,然后发现一个很严重的问题.. 没有一个我想要的上传图片的方式,比如某乎上边就可以直接copy/paste文件,然后进行上传. 然而在Atom上没有找到类似的插 ...

  8. net mvc中angular

    把angular项目整合到.net mvc中   之前的开发选择的是完全舍弃服务端,仅保留最简单web服务器提供angular经打包的静态资源,此外所有的业务与数据请求都访问一个分离的WebApi来实 ...

  9. 【LOJ】#2492. 「BJOI2018」二进制

    题解 每次开这样的数据结构题感想都大概是如下两点 1.为什么别人代码长度都是我的1/2???? 2.为什么我运行时间都是他们的两倍???? 简单分析一下,我们关注一个区间是否合法只关注这个区间有多少个 ...

  10. select 详解

    In summary, a socket will be identified in a particular set when select returns if: readfds:If liste ...