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#实现对用户输入数据进行校验的类,实例分析了C#针对各种用户输入数据的常用校验技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • C#实现.net页面之间传值传参方法汇总

    C#实现.net页面之间传值传参方法汇总

    这篇文章主要介绍了C#实现.net页面之间传值传参方法,实例汇总了几类常见的传值传参的方法,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • C# 多线程对资源读写时如何控制的方法

    C# 多线程对资源读写时如何控制的方法

    这篇文章主要介绍了C# 多线程对资源读写时如何控制的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • C#多线程学习之(四)使用线程池进行多线程的自动管理

    C#多线程学习之(四)使用线程池进行多线程的自动管理

    这篇文章主要介绍了C#多线程学习之使用线程池进行多线程的自动管理,实例分析了C#中线程池的概念与相关的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C#中DataGridView常用操作实例小结

    C#中DataGridView常用操作实例小结

    这篇文章主要介绍了C#中DataGridView常用操作,以实例形式总结了DataGridView绑定下拉列表、设置默认值、判断复选框是否选中等技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • C#使用Dictionary<string, string>拆分字符串与记录log方法

    C#使用Dictionary<string, string>拆分字符串与记录log方法

    这篇文章介绍了Dictionary<string, string>拆分字符串与记录log的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C# WebService创建、发布、调用的实例讲解

    C# WebService创建、发布、调用的实例讲解

    下面小编就为大家分享一篇C# WebService创建、发布、调用的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • Unity实现3D贪吃蛇的移动代码

    Unity实现3D贪吃蛇的移动代码

    这篇文章主要为大家详细介绍了Unity实现3D贪吃蛇的移动代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • WinForm实现窗体最大化并遮盖任务栏的方法

    WinForm实现窗体最大化并遮盖任务栏的方法

    这篇文章主要介绍了WinForm实现窗体最大化并遮盖任务栏的方法,涉及C#实现WinForm窗体全屏显示的实现及调用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • C#使用Datatable导入sqlserver数据库的三种方法

    C#使用Datatable导入sqlserver数据库的三种方法

    本文主要介绍了C#使用Datatable导入sqlserver数据库的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08

最新评论