Unity UGUI的VerticalLayoutGroup(垂直布局)组件的介绍及使用
Unity UGUI的VerticalLayoutGroup(垂直布局)组件的介绍及使用
1. 什么是VerticalLayoutGroup组件?
VerticalLayoutGroup是Unity UGUI中的一种布局组件,用于在垂直方向上自动排列子对象。它可以根据子对象的大小和布局设置,自动调整子对象的位置和大小,实现垂直布局效果。
2. VerticalLayoutGroup组件的工作原理
VerticalLayoutGroup组件通过以下步骤实现垂直布局:
- 获取所有子对象的RectTransform组件。
- 根据子对象的大小和布局设置,计算子对象的位置和大小。
- 调整子对象的位置和大小,使其按照垂直方向上的布局要求进行排列。
3. VerticalLayoutGroup组件的常用属性
- Padding:内边距,控制子对象与VerticalLayoutGroup之间的间距。
- Spacing:子对象之间的间距。
- Child Force Expand:子对象是否自动扩展以填充VerticalLayoutGroup的宽度。
- Child Control Height:子对象是否自动调整高度以适应VerticalLayoutGroup的高度。
- Child Alignment:子对象的对齐方式。
4. VerticalLayoutGroup组件的常用函数
- CalculateLayoutInputHorizontal():计算垂直布局的水平方向上的布局要求。
- CalculateLayoutInputVertical():计算垂直布局的垂直方向上的布局要求。
- SetLayoutHorizontal():设置垂直布局的水平方向上的布局。
- SetLayoutVertical():设置垂直布局的垂直方向上的布局。
5. 例子代码
例子1:创建一个垂直布局的面板
using UnityEngine;
using UnityEngine.UI;
public class VerticalLayoutExample : MonoBehaviour
{
public VerticalLayoutGroup verticalLayoutGroup;
private void Start()
{
verticalLayoutGroup.spacing = 10f;
verticalLayoutGroup.childForceExpandWidth = false;
verticalLayoutGroup.childForceExpandHeight = false;
verticalLayoutGroup.childControlHeight = true;
verticalLayoutGroup.childAlignment = TextAnchor.UpperCenter;
}
}
操作步骤:
- 创建一个空物体,并将VerticalLayoutGroup组件添加到该物体上。
- 将需要进行垂直布局的子对象添加到VerticalLayoutGroup物体下。
- 将VerticalLayoutExample脚本添加到VerticalLayoutGroup物体上。
- 在Inspector面板中,将VerticalLayoutGroup的spacing设置为10,childForceExpandWidth和childForceExpandHeight设置为false,childControlHeight设置为true,childAlignment设置为UpperCenter。
例子2:动态添加子对象
using UnityEngine;
using UnityEngine.UI;
public class AddChildExample : MonoBehaviour
{
public VerticalLayoutGroup verticalLayoutGroup;
public GameObject childPrefab;
private void Start()
{
for (int i = 0; i < 5; i++)
{
GameObject child = Instantiate(childPrefab, verticalLayoutGroup.transform);
child.GetComponentInChildren<Text>().text = "Child " + (i + 1);
}
}
}
操作步骤:
- 创建一个空物体,并将VerticalLayoutGroup组件添加到该物体上。
- 创建一个子对象的预制体,并将其赋值给AddChildExample脚本的childPrefab变量。
- 将AddChildExample脚本添加到空物体上。
- 在Inspector面板中,将VerticalLayoutGroup的spacing和其他布局设置进行适当调整。
例子3:动态删除子对象
using UnityEngine;
using UnityEngine.UI;
public class RemoveChildExample : MonoBehaviour
{
public VerticalLayoutGroup verticalLayoutGroup;
private void Start()
{
for (int i = 0; i < verticalLayoutGroup.transform.childCount; i++)
{
Destroy(verticalLayoutGroup.transform.GetChild(i).gameObject);
}
}
}
操作步骤:
- 创建一个空物体,并将VerticalLayoutGroup组件添加到该物体上。
- 将RemoveChildExample脚本添加到空物体上。
- 在Inspector面板中,将VerticalLayoutGroup的spacing和其他布局设置进行适当调整。
- 运行游戏,所有子对象将被删除。
例子4:动态调整子对象的大小
using UnityEngine;
using UnityEngine.UI;
public class ResizeChildExample : MonoBehaviour
{
public VerticalLayoutGroup verticalLayoutGroup;
private void Start()
{
for (int i = 0; i < verticalLayoutGroup.transform.childCount; i++)
{
RectTransform childRectTransform = verticalLayoutGroup.transform.GetChild(i).GetComponent<RectTransform>();
childRectTransform.sizeDelta = new Vector2(childRectTransform.sizeDelta.x, 100f);
}
}
}
操作步骤:
- 创建一个空物体,并将VerticalLayoutGroup组件添加到该物体上。
- 将ResizeChildExample脚本添加到空物体上。
- 在Inspector面板中,将VerticalLayoutGroup的spacing和其他布局设置进行适当调整。
- 运行游戏,所有子对象的高度将被调整为100。
例子5:动态调整子对象的对齐方式
using UnityEngine;
using UnityEngine.UI;
public class AlignChildExample : MonoBehaviour
{
public VerticalLayoutGroup verticalLayoutGroup;
private void Start()
{
verticalLayoutGroup.childAlignment = TextAnchor.MiddleCenter;
}
}
操作步骤:
- 创建一个空物体,并将VerticalLayoutGroup组件添加到该物体上。
- 将AlignChildExample脚本添加到空物体上。
- 在Inspector面板中,将VerticalLayoutGroup的spacing和其他布局设置进行适当调整。
- 运行游戏,所有子对象的对齐方式将被调整为MiddleCenter。
注意事项
- VerticalLayoutGroup组件只能用于垂直布局,如果需要水平布局,请使用HorizontalLayoutGroup组件。
- 在使用VerticalLayoutGroup组件时,确保子对象的RectTransform组件的锚点和位置设置正确,以便正确计算子对象的位置和大小。
参考资料
- Unity官方文档:VerticalLayoutGroup
- Unity官方教程:Layout Groups
Unity UGUI的VerticalLayoutGroup(垂直布局)组件的介绍及使用的更多相关文章
- Flutter——Column组件(垂直布局组件)
Column组件的常用属性 属性 说明 mainAxisAlignment 主轴的排序方式 crossAxisAlignment 次轴的排序方式 children 组件子元素 import 'pack ...
- 【Flutter实战】六大布局组件及半圆菜单案例
老孟导读:Flutter中布局组件有水平 / 垂直布局组件( Row 和 Column ).叠加布局组件( Stack 和 IndexedStack ).流式布局组件( Wrap )和 自定义布局组件 ...
- Unity UGUI Layout自动排版组件用法介绍
Unity UGUI布局组件 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享 ...
- Andriod中textview垂直水平居中及LinearLayout内组件的垂直布局
1.textview 垂直水平居中的设置 Android:gravity="center_vertical|center" 2.LinearLayout中设置控件垂直布局,默认的是 ...
- 技术胖Flutter第三季-15垂直布局Column组件
博客地址: https://jspang.com/post/flutter3.html#toc-8eb 垂直布局 左对齐: crossAxisAlignment: CrossAxisAlignment ...
- 基于Unity·UGUI实现的RecycleList循环列表UI容器
在UI功能开发实践中,列表UI容器是我们经常使用一种UI容器组件.这种组件就根据输入的数据集合生成对应数据项目.从显示的方向来说,一般就分为水平排布和垂直排布的列表容器两种.列表容器为了在有限的界面空 ...
- Unity UGUI
超详细的基础教程传送门:(持续更新中) Unity UGUI之Canvas&EventSystem:http://blog.csdn.net/qq992817263/article/detai ...
- Android开发自学笔记(Android Studio)—4.1布局组件
一.引言 Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.在Android4.0之前,我们通常说 ...
- Material Design Lite,简洁惊艳的前端工具箱 之 布局组件。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .网站上有对应每一 ...
- Unity UGUI —— 无限循环List
还记得大学毕业刚工作的时候是做flash的开发,那时候看到别人写的各种各样的UI组件就非常佩服,后来自己也慢慢尝试着写,发现其实也就那么回事.UI的开发其实技术的成分相对来说不算多,但是一个好的UI是 ...
随机推荐
- docker上面部署nginx-waf 防火墙“modsecurity”,使用CRS规则,搭建WEB应用防火墙
web防火墙(waf)免费开源的比较少,并且真正可以商用的WAF少之又少,modsecurity 是开源防火墙鼻祖并且有正规公司在维护着,目前是https://www.trustwave.com在维护 ...
- UE中根据场景模型,导出缩略图
在实际使用中,我们有了很多模型,但是有时候我们需要这些模型对应的缩略图,比如我有很多物品,我想弄个仓库,有2种方式,要么,弄个仓库场景,一个物体一个格子摆放第二种,就是为每个物体制作一个缩略图 如果一 ...
- 搭建SpringCloudAlibaba父工程
1.首先创建一个maven项目 删除src目录,当做一级目录用来管理第三方jar版本控制. 2.配置pom文件. SpringCloud.SpringCloudAlibaba.SpringBoot版本 ...
- ElementPlus 组件全局配置
友链:语雀,在线文档协同平台 官方提供的全局配置:Config Provider 本文只做简单的模板参考,具体的配置请根据自己的业务灵活设置,如果你使用的是其它的ui框架,原理应该都差不多 入口文件的 ...
- MySQL概述与安装
MySQL数据库 概要: 一.MySQL数据库的概述 二.MySQL数据库的搭建 三.MySQL数据库软件的使用 四.MySQL数据类型 五.MySQL数据库数据的操作 一.初始MySQL数据库 1. ...
- [Pytorch框架] 2.4 卷积神经网络简介
文章目录 2.4 卷积神经网络简介 2.4.1 为什么要用卷积神经网络 2.4.2结构组成 卷积层 卷积计算 卷积核大小 f 边界填充 (p)adding 步长 (s)tride 计算公式 卷积层 激 ...
- 沁恒 CH32V208(三): CH32V208 Ubuntu22.04 Makefile VSCode环境配置
目录 沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置 沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟 沁恒 CH32V208 ...
- 第一个mybatis程序,实现增删改查CRUD
mybatis 介绍 mybatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache迁移到了googlecode,并且改名为MyBatis,2013年11月迁移到Git ...
- #Python merge函数,pandas库数据查询功能,对标V-LOOKUP
日常办公中,我们经常会遇到需要匹配表,匹配对应数据的场景,在EXCEL中,我们习惯使用VLOOKUP函数或者是X-LOOKUP函数,今天学习的是Python,pandas库中的匹配功能. 首先导入所需 ...
- Apache Arrow DataFusion原理与架构
本篇主要介绍了一种使用Rust语言编写的查询引擎--DataFusion,其使用了基于Arrow格式的内存模型,结合Rust语言本身的优势,达成了非常优秀的性能指标 DataFusion是一个查询引擎 ...