当前位置: 首页 > news >正文

unity-------------UI的界面调节

Rect Transform

我们都知道,Unity3D中所有的GameObject都必须要携带一个Transform组件,且该组件无法移除,那么作为UI显示的GameObject则不是携带Transform而是使用Unity3D专门为UI组件设计的Rect Transform组件,如下:

另外说一下,Canvas Renderer也是UI组件必须携带的组件。

我们来看一下其为我们提供的功能:

位置

位置是以像素为单位,其具体的值则以锚点为准,表示和锚点距离,其中x轴从左到右的数值越来越大,y轴从下到上的数值越来越大,其中的Pos Z和Transform中的position.z效果一致,但不是使用该值来表示UI的深度。保留该值估计是为了在3D UI的一些效果实现上的考虑。

尺寸

不同于缩放,这两个值设置了UI的尺寸,为负并不会翻转UI而是直接不显示。

上面的两个按钮,上方的按钮是设置width为320,下方则是将width为160的按钮的scale x设置为2。

旋转

效果同Transform,一般配合Tween使用。

缩放

效果同Transform,一般配合Tween使用。

深度

不通过NGUI的深度,在UGUI中的深度完全使用树形结构来表示,同一层级里位于下方的节点会覆盖掉位于上方的节点,如下:

修改一下树形显示列表后如下:

Anchor

Rect Transform除了上面提到的功能外,还提供了描点功能,该功能主要实现相对布局的功能。

同时我们还可以非常直观的配置描点:

锚点描述的是当前UI的父对象的位置信息。而锚点则表示当前对象坐标的(0, 0)点。

非stretch

我们可以发现有Left、Center、Right、Top、Middle及Bottom六个设置项,这6个项目可以组合出9种形式的锚点,分别对应了当前UI父对象的9个方向的位置,这样方便我们的UI做相对位置的调整,比如当UI的坐标为(0, 0),选择CenterMiddle则当前UI为居中状态,而选择TopLeft则UI会位于父对象的左上角。

CenterMiddle:

TopLeft:

stretch

除了上面说到的还有一种stretch状态,该状态则表示当前UI距离父级UI边缘的距离,当设定了之后则是使用一种类似相对位置的方式来定义UI的位置及尺寸,我们看下:

当我们选择水平和垂直都为stretch时,Pos X、Pos Y、Width和Height都改变为Left、Top、Right及Bottom,即使用了相对位置来排列,我们调整一下看看。

我们发现按钮始终和父级保持10个像素的距离,调整父级的尺寸会修改子级的尺寸,如下:

我们发现按钮始终为一种相对的位置呈现。

自定义Anchor

我们之前定义锚点都是直接在下拉菜单中选择,那么锚点是否可以自定义,答案是肯定的,比如当我们需要下面的效果时就需要自定义Anchor了。

我们希望子UI的尺寸始终和父UI的尺寸保持一定的比例,比如无论父UI多大,子UI都占其10%的空间。

我们只需要将子UI的锚点设置为一个合适的值即可,比如设置为子UI的尺寸,如下:

我们复制几个改变大小看看效果:

Pivot

注册点或者叫做中心点,如果说Anchor表示的是UI的父级的位置,那么Pivot则表示UI本身的(0, 0)点的位置。

我们首先开启Pivot:

然后就可以在场景中修改UI的Pivot了,如下:

这个小蓝圈就是Button组件的中心点,表示Button组件的(0, 0)点。

下面我们看一个实例:

我希望在屏幕的右上方显示一个按钮且按钮和屏幕的间距为10,只需要将按钮的中心点也设置到右上方即可,如下:

补充

蓝图模式

表示是否忽略掉物体的旋转。点开不能对物体进行旋转。

RawEdit模式

表示当修改Anchor时UI的位置及尺寸是否会根据Anchor进行匹配,点开可以进行匹配。

转载于:https://www.cnblogs.com/w-wfy/p/7493260.html

相关文章:

  • SQL : 根据列名求表名等小技巧
  • F5-WAF-12.0
  • 程序员编程艺术第十二~十五章:IP访问次数,回文等问题(初稿)
  • 读取Execl表数据 导入数据库
  • jQuery插件ReverseOrder实现Javascript倒序及了解prependTo函数
  • 洛谷—— P1041 传染病控制
  • Python学习系列-----第二章 操作符与表达式
  • BZOJ 1617 Usaco River Crossing
  • SQL Server 2005数据库中,获取某个表的创建时间
  • 【bzoj2694】Lcm 莫比乌斯反演+线性筛
  • Eclipse中安装Java反编译插件JD-Eclipse
  • STM32单片机是如何启动的?
  • jmeter参考网址
  • C# 中的事务
  • 边缘高亮效果(三)
  • Android 控件背景颜色处理
  • C语言笔记(第一章:C语言编程)
  • JavaScript设计模式系列一:工厂模式
  • Java比较器对数组,集合排序
  • Java基本数据类型之Number
  • magento2项目上线注意事项
  • php ci框架整合银盛支付
  • PHP的Ev教程三(Periodic watcher)
  • Python进阶细节
  • Quartz初级教程
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 利用DataURL技术在网页上显示图片
  • 我感觉这是史上最牛的防sql注入方法类
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 进程与线程(三)——进程/线程间通信
  • 容器镜像
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​虚拟化系列介绍(十)
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #stm32驱动外设模块总结w5500模块
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (175)FPGA门控时钟技术
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (七)c52学习之旅-中断
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)关于多人操作数据的处理策略
  • .NET 5种线程安全集合
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • @Query中countQuery的介绍