当前位置: 首页 > news >正文

Unity UGUI的LayoutRebuilder的介绍及使用

Unity UGUI的LayoutRebuilder的介绍及使用

1. 什么是LayoutRebuilder?

LayoutRebuilder是Unity UGUI中的一个组件,用于自动重建布局。它可以根据UI元素的变化,自动调整其子元素的位置和大小,以保持布局的一致性。

2. LayoutRebuilder的工作原理

LayoutRebuilder通过遍历UI元素的子元素,根据子元素的布局参数和约束条件,计算出子元素的位置和大小。然后,它会根据这些计算结果,调整子元素的位置和大小,以保持布局的一致性。

3. LayoutRebuilder的常用属性

  • transform: 获取或设置要重建布局的UI元素的Transform组件。
  • layoutRebuildRect: 获取或设置要重建布局的UI元素的RectTransform组件。

4. LayoutRebuilder的常用函数

  • ForceRebuildLayoutImmediate(): 强制立即重建布局。
  • MarkLayoutForRebuild(): 标记布局为需要重建。

5. 完整例子代码

例子1:自动调整子元素的位置和大小

using UnityEngine;
using UnityEngine.UI;public class Example1 : MonoBehaviour
{public LayoutGroup layoutGroup;private void Start(){// 在布局发生变化时,调用ForceRebuildLayoutImmediate()函数layoutGroup.transform.GetComponent<RectTransform>().ForceRebuildLayoutImmediate();}
}

操作步骤:

  1. 将Example1脚本挂载到一个UI元素上。
  2. 将要重建布局的UI元素的LayoutGroup组件赋值给layoutGroup变量。
  3. 运行游戏,布局会自动调整子元素的位置和大小。

注意事项:

  • 在布局发生变化时,需要手动调用ForceRebuildLayoutImmediate()函数。

例子2:标记布局为需要重建

using UnityEngine;
using UnityEngine.UI;public class Example2 : MonoBehaviour
{public LayoutGroup layoutGroup;private void Start(){// 标记布局为需要重建layoutGroup.transform.GetComponent<RectTransform>().MarkLayoutForRebuild();}
}

操作步骤:

  1. 将Example2脚本挂载到一个UI元素上。
  2. 将要重建布局的UI元素的LayoutGroup组件赋值给layoutGroup变量。
  3. 运行游戏,布局会自动调整子元素的位置和大小。

注意事项:

  • 标记布局为需要重建后,布局会在下一帧自动重建。

例子3:获取布局的计算结果

using UnityEngine;
using UnityEngine.UI;public class Example3 : MonoBehaviour
{public LayoutGroup layoutGroup;private void Start(){// 获取布局的计算结果Rect layoutRect = layoutGroup.transform.GetComponent<RectTransform>().rect;Debug.Log("Layout Rect: " + layoutRect);}
}

操作步骤:

  1. 将Example3脚本挂载到一个UI元素上。
  2. 将要获取布局计算结果的UI元素的LayoutGroup组件赋值给layoutGroup变量。
  3. 运行游戏,控制台会输出布局的计算结果。

注意事项:

  • 获取布局的计算结果需要在布局重建后进行。

例子4:自定义布局参数

using UnityEngine;
using UnityEngine.UI;public class Example4 : MonoBehaviour
{public LayoutGroup layoutGroup;public float spacing = 10f;private void Start(){// 自定义布局参数layoutGroup.spacing = spacing;layoutGroup.transform.GetComponent<RectTransform>().ForceRebuildLayoutImmediate();}
}

操作步骤:

  1. 将Example4脚本挂载到一个UI元素上。
  2. 将要自定义布局参数的UI元素的LayoutGroup组件赋值给layoutGroup变量。
  3. 设置spacing变量为所需的间距。
  4. 运行游戏,布局会按照自定义的布局参数进行调整。

注意事项:

  • 自定义布局参数需要在布局重建前进行。

例子5:动态添加子元素后重建布局

using UnityEngine;
using UnityEngine.UI;public class Example5 : MonoBehaviour
{public LayoutGroup layoutGroup;public GameObject prefab;private void Start(){// 动态添加子元素GameObject newElement = Instantiate(prefab, layoutGroup.transform);newElement.transform.SetAsLastSibling();// 重建布局layoutGroup.transform.GetComponent<RectTransform>().ForceRebuildLayoutImmediate();}
}

操作步骤:

  1. 将Example5脚本挂载到一个UI元素上。
  2. 将要添加子元素的UI元素的LayoutGroup组件赋值给layoutGroup变量。
  3. 将要动态添加的子元素的预制体赋值给prefab变量。
  4. 运行游戏,子元素会被动态添加,并且布局会自动调整。

注意事项:

  • 动态添加子元素后,需要手动调用ForceRebuildLayoutImmediate()函数。

6. 参考资料

  • Unity官方文档:LayoutRebuilder
  • Unity官方教程:Layout Components

相关文章:

Unity UGUI的LayoutRebuilder的介绍及使用

Unity UGUI的LayoutRebuilder的介绍及使用 1. 什么是LayoutRebuilder&#xff1f; LayoutRebuilder是Unity UGUI中的一个组件&#xff0c;用于自动重建布局。它可以根据UI元素的变化&#xff0c;自动调整其子元素的位置和大小&#xff0c;以保持布局的一致性。 2. LayoutReb…...

深刻理解python特性-列表推导式和生成器表达式

哈喽大家好&#xff0c;今天给大家介绍两个Python中特性-列表推导式和生成器表达式 今天我想向你介绍python语言的两个非常有用的特性&#xff1a;列表推导式和生成器表达式。这两个特性都可以让你用一行简洁的代码来创建一个序列&#xff0c;而不需要写循环或者函数。但是它们…...

Sentinel dashboard的使用;Nacos保存Sentinel限流规则

Sentinel dashboard的使用 往期文章 Nacos环境搭建Nacos注册中心的使用Nacos配置中心的使用Sentinel 容灾中心的使用 参考文档 Sentinel alibaba/spring-cloud-alibaba Wiki GitHub 限流结果 下载sentinel-dashboard github地址&#xff1a;Sentinel/sentinel-dashboar…...

vue学习之插值表达式{{}}与显示数据(v-text和v-html)

1. 记得导入 <!-- 在线导入 --> <!-- 开发环境版本&#xff0c;包含了用帮助的命令行警告 --> <script src"https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <!-- 生产环境版本&#xff0c;优化了尺寸和速度 --> <scri…...

2,认识N(logN)的排序【p3】

认识N( logN} 的排序 2.1归并排序2.1.1代码实现归并排序2.1.1.1自己c实现归并排序2.1.1.2gptc实现归并排序2.1.1.3总结2.1.1.4比较行为 2.1.2归并排序使用master公式2.1.3归并排序的扩展2.1.3.1小和问题2.1.3.2逆序对问题 2.2快排、荷兰国旗问题2.2.1问题一2.2.2问题二(荷兰国旗…...

华为机考--服务失效判断--带答案

新2023年华为OD真题机考题库大全-带答案&#xff08;持续更新)or2023华为OD统一考试&#xff08;AB卷&#xff09;题库清单-带答案&#xff08;持续更新&#xff09; 题目描述 某系统中有众多服务&#xff0c;每个服务用字符串&#xff08;只包含字母和数字&#xff0c;长度<…...

C++对C的加强(全)

目录 C对C的加强 命名空间 为什么要使用命名空间 怎么使用命名空间 命名空间的定义 命名空间的使用 使用域解析符 :: 使用using声明 内联命名空间 嵌套命名空间 随时将新的成员加入命名空间 命名空间中 函数的声明和实现分开 无名命名空间 命名空间取别名 使用u…...

ES6及以上新特性

ES6&#xff08;ECMAScript 2015&#xff09;及以上版本引入了许多新特性&#xff0c;每个版本都有不同的增强和改进。以下是 ES6 及以上版本的新特性的详细描述&#xff1a; ES6&#xff08;ECMAScript 2015&#xff09;&#xff1a; let 和 const 声明&#xff1a;引入块级作…...

伦敦金在非农双向挂单

对伦敦金投资有一定经验的投资者都知道&#xff0c;在非农时期&#xff0c;伦敦金市场会出现很大的波动&#xff0c;那么我们如何才能抓住这些波动呢&#xff1f;答案是很难的。但是&#xff0c;有些投资者在多年实践中发明了一种双向挂单的方法&#xff0c;这里和大家一切分享…...

【C语言】—— __attribute__((fallthrough))

__attribute__((fallthrough)) 是一个在编译器中使用的特性&#xff0c;用于指示在 switch 语句中的 case 标签中故意省略 break 语句时的意图。它告诉编译器&#xff0c;故意省略 break 是有意为之&#xff0c;而不是出现了错误或遗漏。 当使用 switch 语句时&#xff0c;通常…...

【深度学习】生成对抗网络Generative Adversarial Nets

序言 本文是GAN网络的原始论文&#xff0c;发表于2014年&#xff0c;我们知道&#xff0c;对抗网络是深度学习中&#xff0c;CNN基础上的一大进步&#xff1b; 它最大的好处是&#xff0c;让网络摆脱训练成“死模型”到固定场所处去应用&#xff0c;而是对于变化的场景&#xf…...

【深度学习】从现代C++中的开始:卷积

一、说明 在上一个故事中&#xff0c;我们介绍了机器学习的一些最相关的编码方面&#xff0c;例如 functional 规划、矢量化和线性代数规划。 本文&#xff0c;让我们通过使用 2D 卷积实现实际编码深度学习模型来开始我们的道路。让我们开始吧。 二、关于本系列 我们将学习如何…...

金融数学方法:蒙特卡洛模拟

1.方法介绍 蒙特卡洛模拟是一种基于概率和统计的数值计算方法&#xff0c;用于解决各种复杂问题。它以概率统计为基础&#xff0c;通过随机抽样和重复实验的方式进行模拟&#xff0c;从而得到问题的近似解。它的基本思想是通过大量的随机样本来近似计算问题的解&#xf…...

vue 文件扩展名中 esm 、common 、global 以及 mini 、 dev 、prod 、runtime 的含义

vue 文件扩展名中 esm 、common 、global 以及 mini 、 dev 、prod 、runtime 的含义 vue.js 直接用在 script 标签中的完整版本&#xff08;同时包含编译器 compiler 和运行时 runtime&#xff09;&#xff0c;可以看到源码&#xff0c;适用于开发环境。 这个版本视图可以写在…...

微服务契约测试框架Pact-Python实战

Pact是一个契约测试框架&#xff0c;有多种语言实现&#xff0c;本文以基于pact-python探究契约测试到底是什么&#xff1f;以及如何实现 官网&#xff1a;自述文件 |契约文档 (pact.io) 契约测试步骤 1、为消费者写一个单元测试&#xff0c;让它通过&#xff0c;并生成契约…...

Linux 给用户 赋某个文件夹操作的权限(实现三权分立)

Linux 给用户 赋某个文件夹操作的权限 这里用的ubuntu16.04 一、配置网站管理员 linux文件或目录的权限分为&#xff0c;读、写、可执行三种权限。文件访问的用户类别分为&#xff0c;文件创建者、与文件创建者同组的用户、其他用户三类。 添加用户 useradd -d /var/www/htm…...

【C++入门到精通】C++入门 —— 类和对象(初始化列表、Static成员、友元、内部类、匿名对象)

目录 一、初始化列表 ⭕初始化列表概念 ⭕初始化列表的优点 ⭕使用场景 ⭕explicit关键字 二、Static成员 ⭕Static成员概念 &#x1f534;静态数据成员&#xff1a; &#x1f534;静态函数成员&#xff1a; ⭕使用静态成员的优点 ⭕使用静态成员的注意事项 三、友…...

“深入理解Spring Boot:从入门到高级应用“

标题&#xff1a;深入理解Spring Boot&#xff1a;从入门到高级应用 摘要&#xff1a;本文将介绍Spring Boot的基本概念、原理和使用方法&#xff0c;并探讨如何在实际开发中充分发挥Spring Boot的优势。通过详细的示例代码&#xff0c;读者将能够深入理解Spring Boot的各个方…...

Apache Spark 的基本概念和在大数据分析中的应用

Apache Spark是一种快速、通用、可扩展的大数据处理引擎&#xff0c;用于大规模数据处理任务&#xff0c;如批处理、交互式查询、实时流处理、机器学习和图形处理等。它的主要特点包括&#xff1a; 1. 速度&#xff1a;Spark使用In-Memory计算技术&#xff0c;将计算结果存储在…...

Debian LNMP架构的简单配置使用

一、LNMP简介 LinuxNginxMysqlPHP组成的网站架构&#xff0c;常用于中小型网站服务。 二、环境 Debian 6.1.27-1kali1 (2023-05-12) Nginx/1.22.1 10.11.2-MariaDB&#xff08;mysql&#xff09; PHP 8.2.7 &#xff08;Debian 6.1.27包含以上包&#xff0c;直接使用即…...

番茄小说离线阅读解决方案:打造你的个人数字图书馆

番茄小说离线阅读解决方案&#xff1a;打造你的个人数字图书馆 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 在数字阅读时代&#xff0c;你是否曾遇到过这样的困扰&#xff1a;网络信号不…...

浦语灵笔2.5-7B精彩案例分享:手写体题目识别+解题逻辑生成全过程

浦语灵笔2.5-7B精彩案例分享&#xff1a;手写体题目识别解题逻辑生成全过程 1. 引言&#xff1a;当AI“看懂”你的手写作业 想象一下这个场景&#xff1a;你正在辅导孩子做数学作业&#xff0c;他遇到一道难题&#xff0c;不仅把题目抄了下来&#xff0c;还在旁边画了辅助线、…...

腾讯开源翻译大模型HY-MT1.5-7B镜像使用教程:新手快速入门

腾讯开源翻译大模型HY-MT1.5-7B镜像使用教程&#xff1a;新手快速入门 你是否曾为寻找一个既强大又好用的翻译工具而烦恼&#xff1f;无论是阅读外文资料、处理多语言客服&#xff0c;还是开发一个需要实时翻译的应用&#xff0c;找到一个靠谱的翻译引擎总是关键一步。今天&am…...

当 Go 还在追求极简时,C++ 26 却又加了四大“史诗级”新特性

大家好&#xff0c;我是Tony Bai。在这个 Go、Zig 等“小而美”新语言颇受青睐的时代&#xff0c;如果你去技术社区里问一句&#xff1a;“C 这门语言怎么样&#xff1f;”你大概率会得到一堆充满戏谑的回答&#xff1a;“太复杂了&#xff0c;别学”、“从入门到放弃”、“面试…...

丹青幻境功能全解析:宣纸UI、动态LoRA、文艺交互实操

丹青幻境功能全解析&#xff1a;宣纸UI、动态LoRA、文艺交互实操 1. 数字艺术创作新范式 在数字艺术创作领域&#xff0c;丹青幻境Z-Image Atelier带来了一场界面革命。这款工具将4090显卡的强大算力隐藏在仿古宣纸界面背后&#xff0c;为创作者提供了前所未有的沉浸式体验。…...

小白也能搞定:CYBER-VISION零号协议智能助盲系统部署全流程

小白也能搞定&#xff1a;CYBER-VISION零号协议智能助盲系统部署全流程 1. 系统介绍与准备工作 CYBER-VISION零号协议是一款专为视障人士设计的智能助盲系统&#xff0c;它通过先进的计算机视觉技术&#xff0c;将周围环境实时转化为可理解的语音提示。想象一下&#xff0c;当…...

Graphormer在计算毒理学中的应用:预测hERG通道抑制活性的完整建模流程

Graphormer在计算毒理学中的应用&#xff1a;预测hERG通道抑制活性的完整建模流程 1. 项目概述 Graphormer是一种基于纯Transformer架构的图神经网络&#xff0c;专门为分子图&#xff08;原子-键结构&#xff09;的全局结构建模与属性预测而设计。该模型在OGB、PCQM4M等分子…...

SpringBoot+Redis实现高并发短信登录:双拦截器设计背后的架构思考

SpringBootRedis高并发短信登录架构深度解析&#xff1a;双拦截器设计与性能优化实战 1. 高并发场景下的登录架构挑战 在当今互联网应用中&#xff0c;短信验证码登录已成为主流的身份验证方式之一。但当系统面临高并发请求时&#xff0c;传统的Session-based方案会暴露出诸多瓶…...

突发!国行苹果 AI 凌晨偷跑又紧急下线

3 月 31 日凌晨&#xff0c;大量升级 iOS 26.4 的国行 iPhone 16 及后续机型用户&#xff0c;突然发现设置里 “Siri” 变成 “Apple 智能与 Siri”&#xff0c;可下载 9.5GB 本地 AI 模型&#xff0c;解锁实时翻译、视觉智能、照片消除等全套功能。不过这场“惊喜”仅持续了数…...

UEFI SCT编译调试踩坑记:我的AARCH64环境搭建与问题解决实录

UEFI SCT编译调试实战&#xff1a;AARCH64环境搭建与疑难问题全解析 当你在深夜的办公室里盯着屏幕上闪烁的光标&#xff0c;第N次尝试编译UEFI SCT测试套件时&#xff0c;那种既熟悉又陌生的挫败感再次袭来。作为UEFI开发者&#xff0c;我们都经历过这样的时刻——官方文档看似…...