注册
|
登录
发帖
热搜
活动
交友
discuz
论坛
BBS
翼度工具
翼度网址导航
开发工具
Linux命令速查
网页设计配色表
在线制作icon
颜色代码选取器
翼度科技
»
论坛
›
编程开发
›
.net
›
查看内容
返回列表
发新帖
Unity UGUI的VerticalLayoutGroup(垂直布局)组件的介绍及使用
光富贵
光富贵
当前离线
积分
21
7
主题
7
帖子
21
积分
新手上路
新手上路, 积分 21, 距离下一级还需 29 积分
新手上路, 积分 21, 距离下一级还需 29 积分
积分
21
发消息
显示全部楼层
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
本文作者:
Blank
本文链接:
版权声明:本博客所有文章除特别声明外,均采用
BY-NC-SA
许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角
【
推荐
】
一下。您的鼓励是博主的最大动力!
来源:
https://www.cnblogs.com/alianblank/archive/2023/07/21/17570842.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
上一篇:
PerfView专题 (第十五篇): 如何洞察 C# 中的慢速方法
下一篇:
chrome事件循环的自问自答
发表于 2023-7-21 15:25:01
举报
回复
使用道具
分享
返回列表
发新帖
本版积分规则
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
快速回复
快速回复
返回顶部
返回顶部
返回列表
返回列表