Unity UGUI的HorizontalLayoutGroup水平布局组件介绍使用

 更新时间:2023年07月26日 11:45:59   作者:AlianBlank  
这篇文章主要为大家介绍了Unity UGUI的HorizontalLayoutGroup水平布局组件介绍使用,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Unity UGUI的HorizontalLayoutGroup(水平布局)组件的介绍及使用

1. 什么是HorizontalLayoutGroup组件?

HorizontalLayoutGroup是Unity UGUI中的一种布局组件,用于在水平方向上对子物体进行排列和布局。它可以根据一定的规则自动调整子物体的位置和大小,使它们在水平方向上均匀分布。

2. HorizontalLayoutGroup的工作原理

HorizontalLayoutGroup组件通过以下步骤实现水平布局:

  • 获取所有子物体的RectTransform组件。
  • 根据子物体的大小和布局规则,计算出每个子物体的位置和大小。
  • 调整子物体的位置和大小,使它们在水平方向上均匀分布。

3. HorizontalLayoutGroup的常用属性

  • Spacing:子物体之间的间距。
  • ChildForceExpandWidth:是否强制子物体扩展宽度以填充整个水平布局。
  • ChildForceExpandHeight:是否强制子物体扩展高度以填充整个水平布局。
  • ChildControlWidth:是否控制子物体的宽度。
  • ChildControlHeight:是否控制子物体的高度。

4. HorizontalLayoutGroup的常用函数

  • CalculateLayoutInputHorizontal():计算水平布局的输入。
  • CalculateLayoutInputVertical():计算垂直布局的输入。
  • SetLayoutHorizontal():设置水平布局。
  • SetLayoutVertical():设置垂直布局。

5. 例子代码

例子1:创建一个水平布局,并添加三个子物体

using UnityEngine;
using UnityEngine.UI;
public class Example : MonoBehaviour
{
    public HorizontalLayoutGroup layoutGroup;
    public GameObject childPrefab;
    void Start()
    {
        for (int i = 0; i < 3; i++)
        {
            GameObject child = Instantiate(childPrefab, layoutGroup.transform);
            child.GetComponent<Text>().text = "Child " + (i + 1);
        }
    }
}

操作步骤:

  • 创建一个空物体,并添加HorizontalLayoutGroup组件。
  • 创建一个子物体预制体,包含一个Text组件。
  • 将子物体预制体拖拽到layoutGroup的Child Prefab属性中。
  • 运行游戏,可以看到三个子物体在水平方向上均匀分布。

例子2:设置子物体之间的间距

using UnityEngine;
using UnityEngine.UI;
public class Example : MonoBehaviour
{
    public HorizontalLayoutGroup layoutGroup;
    public GameObject childPrefab;
    void Start()
    {
        layoutGroup.spacing = 20f;
        for (int i = 0; i < 3; i++)
        {
            GameObject child = Instantiate(childPrefab, layoutGroup.transform);
            child.GetComponent<Text>().text = "Child " + (i + 1);
        }
    }
}

操作步骤:

  • 创建一个空物体,并添加HorizontalLayoutGroup组件。
  • 创建一个子物体预制体,包含一个Text组件。
  • 将子物体预制体拖拽到layoutGroup的Child Prefab属性中。
  • 将layoutGroup的Spacing属性设置为20。
  • 运行游戏,可以看到子物体之间的间距变为20。

例子3:强制子物体扩展宽度以填充整个水平布局

using UnityEngine;
using UnityEngine.UI;
public class Example : MonoBehaviour
{
    public HorizontalLayoutGroup layoutGroup;
    public GameObject childPrefab;
    void Start()
    {
        layoutGroup.childForceExpandWidth = true;
        for (int i = 0; i < 3; i++)
        {
            GameObject child = Instantiate(childPrefab, layoutGroup.transform);
            child.GetComponent<Text>().text = "Child " + (i + 1);
        }
    }
}

操作步骤:

  • 创建一个空物体,并添加HorizontalLayoutGroup组件。
  • 创建一个子物体预制体,包含一个Text组件。
  • 将子物体预制体拖拽到layoutGroup的Child Prefab属性中。
  • 将layoutGroup的Child Force Expand Width属性设置为true。
  • 运行游戏,可以看到子物体的宽度被扩展以填充整个水平布局。

例子4:控制子物体的宽度和高度

using UnityEngine;
using UnityEngine.UI;
public class Example : MonoBehaviour
{
    public HorizontalLayoutGroup layoutGroup;
    public GameObject childPrefab;
    void Start()
    {
        layoutGroup.childControlWidth = false;
        layoutGroup.childControlHeight = false;
        for (int i = 0; i < 3; i++)
        {
            GameObject child = Instantiate(childPrefab, layoutGroup.transform);
            child.GetComponent<Text>().text = "Child " + (i + 1);
        }
    }
}

操作步骤:

  • 创建一个空物体,并添加HorizontalLayoutGroup组件。
  • 创建一个子物体预制体,包含一个Text组件。
  • 将子物体预制体拖拽到layoutGroup的Child Prefab属性中。
  • 将layoutGroup的Child Control Width和Child Control Height属性都设置为false。
  • 运行游戏,可以看到子物体的宽度和高度不受控制,保持原始大小。

例子5:自定义布局规则

using UnityEngine;
using UnityEngine.UI;
public class Example : MonoBehaviour
{
    public HorizontalLayoutGroup layoutGroup;
    public GameObject childPrefab;
    void Start()
    {
        layoutGroup.childAlignment = TextAnchor.MiddleCenter;
        for (int i = 0; i < 3; i++)
        {
            GameObject child = Instantiate(childPrefab, layoutGroup.transform);
            child.GetComponent<Text>().text = "Child " + (i + 1);
        }
    }
}

操作步骤:

  • 创建一个空物体,并添加HorizontalLayoutGroup组件。
  • 创建一个子物体预制体,包含一个Text组件。
  • 将子物体预制体拖拽到layoutGroup的Child Prefab属性中。
  • 将layoutGroup的Child Alignment属性设置为Middle Center。
  • 运行游戏,可以看到子物体在水平方向上居中对齐。

注意事项

  • HorizontalLayoutGroup组件只能用于水平布局,如果需要垂直布局,可以使用VerticalLayoutGroup组件。
  • 子物体的RectTransform组件的锚点和位置会影响布局效果,需要根据实际需求进行调整。

参考资料

Unity官方文档 - HorizontalLayoutGroup

以上就是Unity UGUI的HorizontalLayoutGroup水平布局组件介绍使用的详细内容,更多关于Unity UGUI水平布局组件的资料请关注脚本之家其它相关文章!

相关文章

  • C# 正则表达式常用的符号和模式解析(最新推荐)

    C# 正则表达式常用的符号和模式解析(最新推荐)

    这篇文章主要介绍了C# 正则表达式常用的符号和模式解析,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • WinForm限制窗体不能移到屏幕外的方法

    WinForm限制窗体不能移到屏幕外的方法

    这篇文章主要介绍了WinForm限制窗体不能移到屏幕外的方法,实例分析了C#中WinForm窗体操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • WPF中使用CallerMemberName简化InotifyPropertyChanged的实现

    WPF中使用CallerMemberName简化InotifyPropertyChanged的实现

    这篇文章介绍了WPF中使用CallerMemberName简化InotifyPropertyChanged的实现,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#交错数组知识点分析

    C#交错数组知识点分析

    在本篇文章里小编给大家整理的是关于C#交错数组知识点分析,需要的朋友们参考下。
    2019-11-11
  • C#使用Word中的内置对话框实例

    C#使用Word中的内置对话框实例

    这篇文章主要介绍了C#使用Word中的内置对话框实例,包括了对话框的显示方法及后期绑定具体用法,需要的朋友可以参考下
    2014-10-10
  • C#实现程序等待延迟执行的方法

    C#实现程序等待延迟执行的方法

    这篇文章主要介绍了C#实现程序等待延迟执行的方法,涉及C#动态链接库的使用及延迟的实现技巧,需要的朋友可以参考下
    2015-09-09
  • c# 提取文档信息的示例

    c# 提取文档信息的示例

    这篇文章主要介绍了c# 提取文档信息的示例,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下
    2021-02-02
  • C# HttpClient超时重试机制详解

    C# HttpClient超时重试机制详解

    超时重试的实现方式可以使用循环结构,在请求发起后等待一定时间,若超时未收到响应,则再次发起请求,循环次数可以根据实际情况进行设置,一般建议不超过三次,这篇文章主要介绍了C# HttpClient超时重试,需要的朋友可以参考下
    2023-06-06
  • 改进c# 代码的五个技巧(二)

    改进c# 代码的五个技巧(二)

    这篇文章主要介绍了改进c# 代码的五个技巧(二),帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2021-01-01
  • C#如何通过QQ邮件发送验证码到指定邮箱

    C#如何通过QQ邮件发送验证码到指定邮箱

    在程序设计中发送验证码是常见的一个功能,用户在注册账号时或忘记密码后通常需要发送验证码到手机短信或邮箱来验证身份,这篇文章主要给大家介绍了关于C#如何通过QQ邮件发送验证码到指定邮箱的相关资料,需要的朋友可以参考下
    2024-01-01

最新评论