第四十七章 Unity 布局(中)

news2024/12/21 19:57:40

在上一章节中我给父元素Panel添加了Horizontal Layout Group组件,并且添加了两个Text元素。

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

我们勾选了Control Child Size属性,也就是让Panel控制两个Text的尺寸。

请注意,上图中的Child Force Expand 也是默认勾选状态(这个很重要)。

此时,我们发现两个Text的尺寸变成了150*300了。

我们在Text2的Rect Transform中也能看到Width的值改变了。并且这个Width值是灰色,不允许我们手动修改的,同理位置PosX和PosY也不允许我们手动修改。说白了,就是子元素Text的位置和宽度都将由父元素Panel来控制了。这种方式的好处是什么呢?我们将Panel的宽度值由300改成400,如下所示

我们看看Text发生什么变化了

我们发现Text也随之增加的宽度,这是自动布局产生的效果,

在Text2的属性中,我们也看到Width的值由之前的150变成了200。这个效果完全是由父元素Panel的Horizontal Layout Group组件以及它的Control Child Size属性来控制的。默认情况下,子元素Text会等比例分配父元素Panel的空间。这个是由Horizontal Layout Group组件的Child Force Expand项决定的(默认勾选状态)。Child Force Expand表示是否要强制子项扩展以填充额外的可用空间。把容器的剩余控件划分为子控件个数的份,每个子控件分别处在每一等份的开头。若同时勾选了Control Child Size,容器的多余空间会直接按照Flexible Witdh的比例进行分配给子元素。我们取消它,看看效果

 

我们发现,两个Text紧密的排列在一起,他们保持各自的“内容尺寸”,不在占据父元素Panel的剩余空间了。我们发现现在的Text2的宽度变成59像素了,这个宽度是文本“New Text”的内容宽度。那么,我们要怎么进一步控制Text的宽度呢?需要我们借助Layout Element组件。请注意,这个Layout Element组件是要添加到子元素上面的。如下所示:

 

我们发现,这个Layout Element组件有三组不同的Width和Height组成。

Minmum Width 和 Minmum Height 是最小宽度和高度。

Preferred Width 和 Preferred Height 是偏好宽度和高度。

Flexible Width 和 Flexible Height 是灵活宽度和高度。

备注:当我们勾选对应的选项的时候,就可以设置对应的宽度值和高度值了。

如果我们对这三组尺寸都设置里的对应的数值,那么他们之间是什么样的影响关系呢?首先,最小宽度和高度肯定是规定了UI元素的最小宽度和高度,这个很容易理解。如果父类UI元素中仍有多余的空间,那么偏好宽度和高度就会起作用。如果上面两组尺寸分配完了之后,父类UI元素仍有额外的空间,那么灵活宽度和高度就会启用了。请注意,Layout Element设置的属性值需要借助Layout Group才能起作用,而Layout Group就包括 Horizontal Layout Group水平布局组件、Vertical Layout Group垂直布局组件和Grid Layout Group网格布局组件。接下来,我们就来设置一下两个Text的Layout Element组件的属性值。

我们让Text的最小宽度为100,然后偏好宽度为150,可以理解Text的最大宽度就是150

我们让Text2的最小宽度为100,然后偏好宽度为250,可以理解Text2的最大宽度为250

最终的效果就是上图这样。Text占据150的空间,Text2占据250的空间。最后我们说明一下灵活宽度的使用。灵活宽度并不是像素值,而是相对单位。假如我们设置两个Text的灵活宽度为1和2。也就是说,如果Panel还有剩余空间的话,两个Text就按照大约1:2的比例来占据剩余空间。大家可以自行设置一下,看看最终效果。

总结,使用水平布局组件的两种方式,一种是由布局组件来控制子元素的尺寸,两一种就是使用Layout Element组件来控制子元素的尺寸。

接下来,我们介绍一下垂直布局组 (Vertical Layout Group)组件。垂直布局组组件将子UI元素纵向(垂直方向)放置。子UI元素的高度根据各自的最小高度、偏好高度和灵活高度决定。另外垂直布局组的属性与上面的水平布局组是一样的,我们就不在详细介绍了。

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++入门知识(下)

目录 一、内联函数 1.1内联函数的概念 1.2内联函数的使用 1.3内联函数的特性 1.4宏的优缺点 1.5C中可替代宏的技术 二、auto关键字 2.1什么是auto关键字 2.2auto简介 2.3auto的使用细则 2.4auto不能推导的场景 三、基于范围的for循环(C11) 3.…

大屏只用来做汇报?知道这6个应用场景,直接升职加薪!

五一假几个朋友小聚了一下,好久没联系了,现在才知道大家从事行业五花八门的。知道我从事IT行业好几年,他们非要让我讲讲现在异常火爆的大屏,说是所在企业单位都在研究这玩意儿,有的业务人员焦虑不已不知道如何下手&…

Lenovo m93 mini 电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔) 硬件型号驱动情况 主板Lenovo m93 mini 处理器Intel i5-4590T 2.20GHz (35w) 4-core/4-thread已驱动 内存8GB (2x4) DDR3 1600MHz已驱动 硬盘2.5" SSD Samsung 8…

《Linux 内核设计与实现》11. 定时器和时间管理

文章目录 内核中时间的概念节拍率:HZ理想的 HZ 值高 HZ 的优势高 HZ 的劣势 jiffiesjiffies 的内部表示jiffies 的回绕用户空间和 HZ 硬时钟和定时器实时时钟系统定时器 时钟中断处理程序实际时间定时器使用定时器定时器竞争条件实现定时器 延迟执行忙等待短延迟sch…

跨境商城APP开发需要注意的问题

随着全球化的趋势,跨境电商发展迅猛,越来越多的企业开始进军跨境市场。而跨境商城APP已经成为跨境电商非常重要的一部分。在开发跨境商城APP时,需要注意以下问题: 1.多语言支持 跨境商城APP需要支持不同国家和地区的语言&#x…

在基于Android以及Jetson TK平台上如何写32位的Thumb-2指令

由于Android以及Jetson TK的编译工具链中的汇编器仍然不支持大部分的32位Thumb-2指令,比如 add.w,因此我们只能通过手工写机器指令码来实现想要的指令。下面我将简单地介绍如何在ARM GCC汇编器中手工去写机器指令码。 对于GCC或Clang的汇编器&#xff0…

es6 学习笔记-1

学习视频:尚硅谷Web前端ES6教程,涵盖ES6-ES11_哔哩哔哩_bilibili 一、介绍 ES:全称为EcmaScript,是脚本语言的规范 ECMAScript: 由Ecma国际通过ECMA-262标准化的脚本程序设计语言。 es6兼容性:ECMAScript 6 compa…

adb logcat 保存日志文件到本地

指令 adb logcat > logcat.log例如:例如:adb logcat > D:\logcat.log 注意window中直接输入可能会出现log文件打开显示乱码问题; 请打开cmd检查 输入 chcp 如图 查看结果 如果不是65001 则 执行 chcp 65001 之后执行 例如&#x…

antd 中日期组件添加左侧日期范围选择

一、产品需求 产品有这样一个需求, 在实时的日期组件左侧添加一个快捷时间范围选择,并且选择后,窗口不会自动关闭。 大致样式长这样: 二、需求拆解 拆解一下这个需求,需要满足三个要点: ① 快捷时间范围…

Linux学习之Shell(一)

Shell概述 1)Linux提供的Shell解析器有 [xiaominghadoop101 ~]$ cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh2)bash和sh的关系 [xiaominghadoop101 bin]$ ll | grep bash -rwxr…

LinkFlow CDP洞察能力升级,结合订单开启营销新趋势

4月26日,悠易科技LinkFlow在春季产品发布会上对其洞察产品能力进行了升级。 在技术赋能以人为本的营销5.0阶段,伴随技术的发展,消费者很容易接触到不同的产品和服务,也可以很方便的通过社交网络以及各种社群找到跟自己有相同兴趣…

第四十一章 Unity 输入框 (Input Field) UI

本章节我们学习输入框 (Input Field),它可以帮助我们获取用户的输入。我们点击菜单栏“GameObject”->“UI”->“Input Field”,我们调整一下它的位置,效果如下 我们在层次面板中发现,这个InputField UI元素包含两个子元素&…

PMP项目管理-[第十章]沟通管理

沟通管理知识体系: 规划沟通管理: 10.1 沟通维度划分 10.2 核心概念 定义:通过沟通活动(如会议和演讲),或以工件的方式(如电子邮件、社交媒体、项目报告或项目文档)等各种可能的方式来发送或接受消息 在项目沟通中,需要…

聊聊并发编程的12种业务场景

前言 并发编程是一项非常重要的技术,无论在面试,还是工作中出现的频率非常高。 并发编程说白了就是多线程编程,但多线程一定比单线程效率更高? 答:不一定,要看具体业务场景。 毕竟如果使用了多线程&…

用DevExpress WinForms富文本编辑器,集成高级文本编辑功能(一)

DevExpress WinForm富文本编辑器(RTF编辑器)控件允许用户将高级文本编辑功能集成到下一个WinForms项目中,它包括全面的文本格式选项、支持邮件合并,并附带了丰富的终端用户选项集,因此可以轻松交付受Microsoft word启发…

Linux本地套接字通信

1. 本地套接字 socket API原本为网络通信而设计,后来在其基础上扩展出本地套接字机制用于本地进程间通信。 本地套接字为全双工通信方式。 2. 本地套接字的使用 本地套接字通信步骤 (1)创建本地socket 本地套接字使用文件来标识,…

【JUC基础】04. Lock锁

1、前言 java.util.concurrent.locks为锁定和等待条件提供一个框架的接口和类,说白了就是锁所在的包。 2、什么是Lock Lock是一种锁机制,比同步块(synchronized block)更加灵活,同时也更加复杂的线程同步机制。在JDK…

Node.js,多环境配置

目录 1、多环境简介 2、多环境配置 3、命令运行 1、多环境简介 在前端项目的开发过程中,我们需要把项目发布到不同服务器环境中,例如,测试,生产,开发,预生产等环境。在这个我们需要对不同的环境设置不同…

函数的运用

函数的运用 一、函数的定义二、简单函数实验两个数字的运算:调用位置变量函数变量的作用范围 三、函数的递归阶乘递归目录 四、函数库 一、函数的定义 shell函数是经常使用的,因为有些命令序列是需要反复调用执行的,将命令序列按格式写在一起…

三分钟教你Mac下安装VmWare虚拟机

大数据课程课前环境准备:mac中安装三台linux服务器 一、课前准备 准备一台内存最少8G(建议16G)、cpu i7 4核的电脑 二、课堂主题 安装虚拟化软件VMware准备3台linux虚拟机 三、课堂目标 完成mac下3个虚拟机的安装 四、知识要点 文档说…