其他分享
首页 > 其他分享> > Unity中的自动布局(AutoLayout)

Unity中的自动布局(AutoLayout)

作者:互联网

本文分享Unity中的自动布局(AutoLayout)

在大部分情况下, Unity提供的RectTransform已经足够应付我们日常遇到的需求, 我们一般通过手动修改RectTransform即可.

但是在有些情况下, 我们需要动态设置RectTransform, 特别是动态调整大小或者一些组合布局的需求.

Unity给我们提供了满足这种需求的机制, 就是所谓自动布局.

自动布局的基本介绍

自动布局由两部分组成, 即布局元素(LayoutElements)和布局控制器(LayoutControllers).

布局元素本身并不会对RectTransform做任何修改, 需要由布局控制器来根据自身的性质和布局元素的值来设置.

布局控制器分为控制自身的和控制子节点两类.

不管是自身还是子节点, 被控制器控制之后无法手动修改RectTransform, 有些是不能修改位置, 有些是不能修改大小, 视具体的控制器而定, 如图被控制了位置和高度:

在这里插入图片描述

如果父节点同时拥有控制自身的和控制子节点的控制器, 因为此时子节点由父节点控制, 所以子节点不能拥有控制自身的控制器:

在这里插入图片描述

布局元素(LayoutElement)

布局元素指实现了接口ILayoutElement的组件或者拥有布局元素的对象.

如果拥有多个布局元素组件, 根据layoutPriority确定优先级, 比如Image为0, InputField为1, 同时存在时, 会优先使用InputField的属性.

布局元素相关的组件有:

在这里插入图片描述

属性说明

布局元素实现接口后, 将会拥有以下属性, 并在属性面板最下方通过切页显示, 并在属性面板最下方通过切页显示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

说明

布局控制器(LayoutControllers)

布局控制器是指实现了接口ILayoutController的类, 类图如下

在这里插入图片描述

控制器的分类

控制器根据控制的对象可以分为控制自身和控制子节点的类型.

控制自身大小和位置(RectTransforms)

实现了ILayoutSelfController接口的类:

控制子节点大小和位置(RectTransforms)

实现了ILayoutGroup接口的类:

使用示例

下面给出两个比较常见的需求, 作为上述理论的实践.

(1)Text内容自适应

需求说明: 默认情况下Text的大小需要手动指定, 我们想要固定宽度或者高度, 让另一个方向根据内容自动调整.

Text实现了ILayoutElemtent接口, 是一个布局元素, 默认情况下:

添加控制器ContentSizeFitter, 调节自身大小为首选大小:

在这里插入图片描述
在这里插入图片描述

(2)由子节点大小动态确定父节点的大小

需求: 某些情况下, 一些容器类型的对象, 我们希望其大小是根据子节点大小动态变化的, 比如ScrollViewContent动态扩容.

解决思路: Content需要控制自身大小, 也需要控制子节点大小:

具体步骤演示:

标签:控制,控制器,元素,布局,Unity,自动,AutoLayout,大小,节点
来源: https://blog.csdn.net/woodengm/article/details/120555623