第四十六章 Unity 布局(上)

学习了UI元素的使用,并不能构建出一个完整的UI界面,我们需要使用一些方法将这些UI元素按照“设计稿”的效果,将其摆放到对应的位置上。如何摆放这些UI元素,就是我们需要讲的“布局”,当然这需要借助一些布局组件来完成。我们知道在画布Canvas下的每个UI元素都会自动添加 Rect Transform 组件来控制自身的位置和大小。通常情况下,基于Rect Transform组件的anchor(锚点)和 pivot(轴点)的特性,可以让UI元素实现依赖父UI元素的定位功能。例如绑定在父UI元素的左上角或正中央,长度和宽度“填充”父UI元素尺寸等。但是这种布局的方式属于“静态布局”,也就是在Unity中提前设置好的,项目运行后不能改变了。因此,如果我们想要实现项目运行中的“动态布局”,就得需要使用另一种方法了。Unity的动态布局包括 Horizontal Layout Group水平布局组件、Vertical Layout Group垂直布局组件和Grid Layout Group网格布局组件。

首先,我们先介绍Horizontal Layout Group组件。

我们新建一个“SampleScene4.unity”场景,然后添加一个Text UI 元素,如下所示

 

默认情况下,Text的尺寸是160*30的大小。请注意,这个Horizontal Layout Group组件需要附加到父类UI元素中。因此,我们需要创建一个“Panel”的UI元素,我们称之为面板容器。它的作用就是充当父类UI元素,用来放置子类UI元素的。

 

我们发现这个“Panel”面板容器并没有特殊的组件,唯一的就是Image组件而已。并且“Panel”的锚点是一个矩形,它的尺寸就是父类Canvas的大小。也就是说,这个“Panel”面板容器会“撑满”父类Canvas画布。接下来,我们调节“Panel”的锚点(将矩形的四个点拖拽到一个点上去)和尺寸(300*300)来改变的位置和大小。如下所示

 

接下来,我们要做的就是要让这个“Panel”充当父类UI元素,我们之前创建的Text UI元素作为它的子元素。操作非常简单,只需要在层次面板中,将Text拖动到Panel上面即可。

 

该操作并不会影响到场景视图中的UI变化。

接下来,我们就需要给这个“Panel”添加水平布局组Horizontal Layout Group组件。

水平布局组Horizontal Layout Group组件将其子UI元素并排放置(水平方向)在一起。子UI元素的宽度根据各自的最小宽度、偏好宽度和灵活宽度决定。当我们为Panel添加了Horizontal Layout Group组件后,我们发现Text的位置也发生了变化。

这个Text由原来的位置移动到了Panel的左上方位置。这说明Horizontal Layout Group组件起作用了。接下来,我们就来介绍Horizontal Layout Group组件的一些属性。

Padding布局组边缘内的填充。它分为left,right,top,bottom四个数值,分别代表布局组四个方向的边缘。默认情况下,布局组的子UI元素会紧贴着布局组,如果我设置了Padding的话,子UI元素就会与布局组产生Padding数值的间距。说白了,就是不让子UI元素紧贴布局组而已。熟悉Web网页开发的人员应该对这个Padding非常熟悉了。

Spacing布局元素之间的间距,它影响的是子UI元素之间的间隔距离。说白了,就是不想让子UI元素与子UI元素之间紧贴在一起。

Child Alignment用于子UI元素的对齐方式,默认值为Upper Left,也就是在最上面左对齐。当然还有其他值可供选择:Upper Left,Upper Center,Upper Right,Middle Left,Middle Center,Middle Right,Lower Left,Lower Center,Lower Right。根据英文单词,我们就大概知道这些值的含义了。这里就不再解释了,大家可以自己修改试一试。

Control Child Size  布局组是否控制其子布局元素的宽度和高度。说白了,就是父UI元素控制子UI元素的尺寸。默认值是没有勾选,也就是父UI元素不控制子UI元素的尺寸。

Use Child Scale在为子UI元素调整大小的时候,布局组是否考虑其子UI元素的缩放(scale属性不为1)。也就是说,如果子UI元素进行过缩放,那么就按照缩放后的宽高进行排版。

Child Force Expand是否要强制子UI元素扩展以填充额外的可用空间。默认是勾选状态。也就是说,当父类UI元素有多余的空间时候,子UI元素会根据Layout Element中设置其尺寸。

为了演示水平布局组的效果,我们在Panel的下面再添加一个Text2 UI元素。

也就是说,Panel下面有两个文本 UI子元素。

 

我们发现两个Text UI 元素在水平方向上面依次放置在Panel的最上面。由于Panel的宽度为300,而两个Text的总宽度为 160 + 160 = 320,因此两个Text 超出了Panel的范围。这种情况下,我们有两种解决办法,一个是直接修改Text的Rect Transform里面的Width属性。另一种方式就是修改布局。我们下一个章节介绍如何修改。

本课程涉及的内容已经共享到百度网盘:https://pan.baidu.com/s/1e1jClK3MnN66GlxBmqoJWA?pwd=b2id

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/19349.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

毕业论文相关

毕业论文参考文献和Word保存 一、Word中出现[7-9]多个文献的引用 在正文中选中参考文献角标,右击选择“切换域代码”,参考文献角标[7][8][9]变为{ REF _Ref98345319 \r \h * MERGEFORMAT }{ REF _Ref98345321 \r \h * MERGEFORMAT }{ REF _Ref99390603…

第5章 负载均衡

第5章 负载均衡 5.1 proxy_pass详解 在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。 假设下面四种情况分别用 http://192.…

Java并发编程实践学习笔记(三)——共享对象之发布和异常

目录 1 公共静态变量逸出 2 非私有方法逸出私有变量 3 this引用逸出 4 构造函数中的可覆盖方法调用逸出 发布(publishing)一个对象的意思是:使对象能够在当前作用域之外的代码中使用。例如,将一个指向该对象的引用保存到其他代…

InnoDB线程模型

新版本结构演变 MySQL 5.7 版本 将 Undo日志表空间从共享表空间 ibdata 文件中分离出来,可以在安装 MySQL 时由用户自行指定文件大小和数量增加了 temporary 临时表空间,里面存储着临时表或临时查询结果集的数据Buffer Pool 大小可以动态修改&#xff0…

你不知道的自动化?使用自动化测试在项目中创造高业务价值...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 脱离数据支撑谈价…

GRPC - JAVA笔记

GRPC - JAVA笔记 gRPC简介 由google开源的一个高性能的RPc框架,由google内部的Stubby框架演化而来。2015年正式开源。云原生时代的RPC标准,由Go语言开发 gRPC的核心设计思路 网络通信 ------> gRPC 自己封装了网络通信的部分,提供了多种…

VS2022编译libiconv-1.17

需求概述 获得最新版本的windows下可用的libiconv静态库。 解决方案 概述 使用VS2022编译libiconv-1.17。需要对源码手动进行配置。 本文所述的方法同样适用于动态库,并且理论上适用于VS2010~2022所有版本。 如果你不在乎libiconv的版本,可以参考 …

Redis缓存

就先不连接数据库了 我们测试缓存 实体类: Data AllArgsConstructor NoArgsConstructor public class User implements Serializable {private int id;private String name;private String sex;private String addr; } service: Service public…

小家电LED显示驱动多功能语音芯片IC方案 WT2003H4 B002

随着时代的进步,智能家电的普及已经成为了一个趋势。而在智能家电中,LED显示屏也成为了不可或缺的一部分。因此,在小家电的设计中,LED显示驱动芯片的应用也越来越广泛。比如:电饭煲、电磁炉、数字时钟、咖啡机、电磁炉…

java版spring cloud 企业电子招投标采购系统源码之首页设计

随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及审计监督要…

“正大杯”第十三届市场调查与分析大赛[省一]经验总结+复盘

目录 1 前期组队 2 队员组成 队长-成员1 应用统计学专业 成员2 化学实验专业 成员3-本人 物联网工程专业 成员4 金融ACCA专业 成员5 应用物理学 总结 3 比赛进度 3月中旬 部分图表的制作 问卷设计与制作 稍微改动主题 问卷相关总结 前期调查部分论文框架 3月…

怎么把webp文件转换为jpg?这几种方法值得学习!

怎么把webp文件转换为jpg,我想这样的问题对于那些和图片打交道不多的人来说确实有些困难吧。在我们要处理这个问题之前,我们先来了解一下图片格式webp吧。要是知道Youtube、Gmail、Google Play 中都可以看到 WebP 的身影,而 Chrome 网上商店甚…

高阶python | 堆栈列表:RPN应用(模拟逆波兰式功能实现)

python版本:3.10 在列表中,append和pop方法有一个特殊的用途。可以在列表上使用这两个方法让列表变成一个堆栈使用。 这就是一个栈,它是先进后出,类似单门轿厢电梯一样的设计,出入口共用 堆栈最有用的应用之一就是做逆…

如何解决请求参数为JSON时,采用IO流读取,只能请求一次的问题?

如何解决请求参数为JSON时,采用IO流读取,只能请求一次的问题? 一、错误演示1. 创建项目,添加所需依赖2. 配置redis环境3. 写一个简单的测试请求4. 写一个拦截器,拦截请求5. WebConfig 注册拦截器6. 测试请求 二、问题解…

VR全景园区:数字化旅游业的新未来

VR全景园区是未来数字化旅游业的一种新兴形式。它利用高清晰度的3D图像和360度全景拍摄技术,将景区中的自然风光、历史文化和人文风情等元素呈现在游客面前。VR全景园区不仅可以为游客提供身临其境的参观体验,还可以有效地推广当地的文化和旅游资源。 【…

调试和优化遗留代码

1. 认识调试器 1.1 含义 一个能让程序运行、暂停、然后对进程的状态进行观测甚至修改的工具。 在日常的开发当中使用非常广泛。(PHP开发者以及前端开发者除外) 1.2 常见的调试器 Go语言的自带的 delve 简写为 “dlv”GNU组织提供的 gdbPHP Xdebug前端浏览器debug 调试 1.3…

English Learning - L3 作业打卡 Lesson2 Day8 2023.5.12 周五

English Learning - L3 作业打卡 Lesson2 Day8 2023.5.12 周五 引言🍉句1: The color green is natural for trees and grass.成分划分弱读语调 🍉句2: But it is an unnatural color for humans.成分划分弱读连读语调 🍉句3: A person who h…

1.SpringBoot基础篇

SpringBoot 文档更新日志 版本更新日期操作描述v1.02021/11/14A基础篇 前言 ​ 很荣幸有机会能以这样的形式和互联网上的各位小伙伴一起学习交流技术课程,这次给大家带来的是Spring家族中比较重要的一门技术课程——SpringBoot。一句话介绍这个技术,…

自学软件测试,从10K到40K的技术路线,也就是这些东西...

如果有一天我从梦中醒来时,发现自己的几年自动化测试工程师经验被抹掉,重新回到了一个小白的状态。我想要重新自学自动化测试,然后找到一份自己满意的测试工作,我想大概只需要6个月的时间就够了,如果比较顺利的话&…

头部企业走入无人区,国产数智化厂商挑大梁

本文转自数智前线 文|石兆 编|游勇 央国企数智化与信创化双重需求叠加,国产厂商挑大梁,助力企业升级数智化底座,实现价值化国产替代。 4月,在北京用友产业园的数智剧院里,近千位来自30个行业…