Unity UGUI的VerticalLayoutGroup垂直布局组件介绍使用

 更新时间:2023年07月26日 14:03:38   作者:AlianBlank  
这篇文章主要为大家介绍了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垂直布局组件介绍使用的详细内容,更多关于Unity UGUI垂直布局组件的资料请关注脚本之家其它相关文章!

相关文章

  • sqlserver备份还原数据库功能封装分享

    sqlserver备份还原数据库功能封装分享

    这篇文章主要介绍了sqlserver备份还原数据库功能封装示例,需要的朋友可以参考下
    2014-03-03
  • Unity实现UI渐变效果

    Unity实现UI渐变效果

    这篇文章主要为大家详细介绍了Unity实现UI渐变效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • C#使用晚绑定来实现压缩Access数据库的方法

    C#使用晚绑定来实现压缩Access数据库的方法

    这篇文章主要介绍了C#使用晚绑定来实现压缩Access数据库的方法,项目开发中有一定的实用价值,需要的朋友可以参考下
    2014-08-08
  • C#加密在实际中的应用

    C#加密在实际中的应用

    在系统的管理员有着实际的应用,对于一个数据库管理系统来说,数据库安全还是挺重要的,所以在存入到数据库的密码通常都是加密的
    2012-11-11
  • 如何使用C#从word文档中提取图片

    如何使用C#从word文档中提取图片

    图片和文字是word文档中两种最常见的对象,在微软word中,如果我们想要提取出一个文档内的图片,只需要右击图片选择另存为然后命名保存就可以了,今天这篇文章主要是实现如何使用C#从word文档中提取图片,需要的朋友参考下
    2016-02-02
  • c# 给pdf添加数字签名的步骤

    c# 给pdf添加数字签名的步骤

    这篇文章主要介绍了c# 给pdf添加数字签名的步骤,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2020-12-12
  • C#连接数据库的方法

    C#连接数据库的方法

    ASP.NET连接数据库的技术叫ADO.NET,它是用来向数据库提交sql语句的一堆类。这里连接的是Sql Server 2008数据库,其他数据库用法差不多,就是调用的类名不一样
    2015-11-11
  • 详解C#如何使用消息队列MSMQ

    详解C#如何使用消息队列MSMQ

    消息队列 (MSMQ Microsoft Message Queuing)是MS提供的服务,也就是Windows操作系统的功能,下面就跟随小编一起了解一下C#中是如何使用消息队列MSMQ的吧
    2024-01-01
  • C#中FileSystemWatcher类实现监控文件夹

    C#中FileSystemWatcher类实现监控文件夹

    在C#中,如果你想要监控一个文件夹内文件的变动情况,比如文件的创建、删除、修改等,你可以使用FileSystemWatcher类,下面就来介绍一下FileSystemWatcher监控的使用,感兴趣的可以了解一下
    2024-03-03
  • C#文件非占用读取与帮助类FileHelper

    C#文件非占用读取与帮助类FileHelper

    这篇文章介绍了C#文件非占用读取与帮助类FileHelper,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04

最新评论