博客
关于我
UGUI文图混合排列问题——Horizontal Layout Group和Content Size Fitter
阅读量:507 次
发布时间:2019-03-07

本文共 1536 字,大约阅读时间需要 5 分钟。

UGUI布局问题:Horizontal Layout Group和Content Size Fitter的深度分析

作为一名从事UGUI开发的开发者,我曾经遇到过许多布局问题。最近,我在处理一个涉及文图混合排列的项目时,发现 Horizontal Layout Group 和 Content Size Fitter 这两个组件能够帮助我实现自动居中效果。为了深入理解它们的工作原理,我决定仔细研究这两个组件的特性和应用场景。

Horizontal Layout Group:基础布局组件

Horizontal Layout Group 是一个继承自 HorizontalOrVerticalLayoutGroup 的布局组件,它本质上是一个 Layout Group。Layout Group 对于子物体的排列提供了强大的功能,能够在水平或垂直方向上对齐子元素。

从源码可以看出,Horizontal Layout Group 提供了多种属性设置,如 Padding(边距)、Spacing(间距)、Child Alignment(子物体对齐方式)、Child Force Expand(强制子物体填充)。这些属性使其能够在多种布局场景下灵活运用。无论是 Text 组件还是 Image 组件,Horizontal Layout Group 都可以自动将其排列成整齐的形式。

关键特性:

  • 行列布局:作为 Layout Group,它支持水平或垂直排列子物体。
  • 子物体对齐:提供多种对齐选项,如左、右、中等。
  • 自动排列:在子物体之间自动计算间距和位置。

Content Size Fitter:自动适配组件

Content Size Fitter 是一个功能强大的自动适配组件,主要用于让 RectTransform 组件根据内容的大小进行调整。它支持水平和垂直的两个独立适配模式(FitMode),分别为 Unconstrained、MinSize 和 PreferredSize。

适配模式解释:

  • Unconstrained:不进行自动调整,需要手动设置。
  • MinSize:按内容最小大小调整。
  • PreferredSize:按内容偏好大小调整,这通常是最常用的模式。

Content Size Fitter 通常与任何 Layout Group 组件一起使用非常方便。例如,对于使用 Horizontal Layout Group 布局的父物体,可以在其上添加 Content Size Fitter 来自动调整子物体的大小。

关键功能:

  • 自动大小获取:根据内容动态调整 RectTransform 的尺寸。
  • 双轴适配:分别管理水平和垂直方向的适配。
  • Flexibility:支持灵活的布局需求,适用于多种场景。

综合应用场景

Horizontal Layout Group 和 Content Size Fitter 这两个组件的结合使用,能够高效解决许多布局问题。例如,在一个复杂的UGUI界面中,你可以使用 Horizontal Layout Group 定义一个水平布局,而使用 Content Size Fitter 组件让这个布局自动根据内容调整大小。这种组合方式不仅提升了开发效率,也大大简化了布局逻辑。


总结

通过对这两个组件的深入研究,我不仅掌握了它们的工作原理,还学会了如何更高效地设计和优化UGUI布局。对于初学的开发者来说,这两个组件是学习成熟的基础。同时,我也认识到持续研究和探索UGUI的具体实现至关重要,这样才能更好地理解其行为,并在遇到问题时找到最佳解决方案。

如果你对UGUI布局有更多问题,欢迎留言交流,我们一起探讨这个精彩的话题!

转载地址:http://hkxcz.baihongyu.com/

你可能感兴趣的文章
No Datastore Session bound to thread, and configuration does not allow creation of non-transactional
查看>>
No fallbackFactory instance of type class com.ruoyi---SpringCloud Alibaba_若依微服务框架改造---工作笔记005
查看>>
No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc
查看>>
No mapping found for HTTP request with URI [/...] in DispatcherServlet with name ...的解决方法
查看>>
No mapping found for HTTP request with URI [/logout.do] in DispatcherServlet with name 'springmvc'
查看>>
No module named 'crispy_forms'等使用pycharm开发
查看>>
No module named cv2
查看>>
No module named tensorboard.main在安装tensorboardX的时候遇到的问题
查看>>
No module named ‘MySQLdb‘错误解决No module named ‘MySQLdb‘错误解决
查看>>
No new migrations found. Your system is up-to-date.
查看>>
No qualifying bean of type XXX found for dependency XXX.
查看>>
No qualifying bean of type ‘com.netflix.discovery.AbstractDiscoveryClientOptionalArgs<?>‘ available
查看>>
No resource identifier found for attribute 'srcCompat' in package的解决办法
查看>>
no session found for current thread
查看>>
No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
查看>>
NO.23 ZenTaoPHP目录结构
查看>>
no1
查看>>
NO32 网络层次及OSI7层模型--TCP三次握手四次断开--子网划分
查看>>
NOAA(美国海洋和大气管理局)气象数据获取与POI点数据获取
查看>>
NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata
查看>>