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垂直布局组件的资料请关注脚本之家其它相关文章!

相关文章

  • C#单例模式与多线程用法介绍

    C#单例模式与多线程用法介绍

    这篇文章介绍了C#单例模式与多线程的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 使用Deflate算法对文件进行压缩与解压缩的方法详解

    使用Deflate算法对文件进行压缩与解压缩的方法详解

    本篇文章是对使用Deflate算法对文件进行压缩和解压缩的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • C#如何实现监控手机屏幕(附源码下载)

    C#如何实现监控手机屏幕(附源码下载)

    这篇文章主要介绍了C#如何实现监控手机屏幕(附源码下载),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • C#由当前日期计算相应的周一和周日的实例代码

    C#由当前日期计算相应的周一和周日的实例代码

    这篇文章介绍了C#由当前日期计算相应的周一和周日的实例代码,有需要的朋友可以参考一下
    2013-09-09
  • C# 语言入门基础介绍

    C# 语言入门基础介绍

    这篇文章主要介绍了C# 语言入门基础,c#是一种新式编程语言,不仅面向对象,还类型安全,本教程概述了 C# 8 及更高版本中该语言的主要组件。 下面一起进入文章了解更多的详细内容吧
    2021-12-12
  • C#查询SqlServer数据库并返回单个值的方法

    C#查询SqlServer数据库并返回单个值的方法

    这篇文章主要介绍了C#查询SqlServer数据库并返回单个值的方法,涉及C#操作SQLServer数据库查询的相关技巧,需要的朋友可以参考下
    2015-06-06
  • UGUI实现随意调整Text中的字体间距

    UGUI实现随意调整Text中的字体间距

    这篇文章主要为大家详细介绍了UGUI实现随意调整字体间距的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • C#/VB.NET实现PPT或PPTX转换为图像功能

    C#/VB.NET实现PPT或PPTX转换为图像功能

    由于大多数便携式设备支持浏览图片而不支持浏览PowerPoint 文件,所以相比较而言,图像对于用户而言更加友好。本文将利用C#/VB.NET实现PPT或PPTX转换为图像功能,需要的可以参考一下
    2022-08-08
  • WPF实现类似ChatGPT逐字打印效果的示例代码

    WPF实现类似ChatGPT逐字打印效果的示例代码

    前一段时间ChatGPT类的应用十分火爆,这类应用在回答用户的问题时逐字打印输出,像极了真人打字回复消息,本文就来利用WPF模拟一下这种逐字打印的效果吧
    2023-08-08
  • C#通过标签软件Bartender的ZPL命令打印条码

    C#通过标签软件Bartender的ZPL命令打印条码

    这篇文章介绍了C#通过标签软件Bartender的ZPL命令打印条码,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01

最新评论