第四十九章 Unity UI适配器组件

首先,我们介绍内容大小适配器 (Content Size Fitter)组件。

我们新建一个“SampleScene6.unity”场景,然后添加一个Text UI元素,让其居中显示,并且尺寸设置为50*30。

 

由于我们设置Text的尺寸在水平方向上面太小,也就是Width值太小,里面的内容“New Text”无法全部显示。当然,我们可以增加Width值来解决这个问题。这样会带来一个新的问题,当我们不知道文本内容有多长的时候,我们如何设置这个Width数值呢?显然,最好的方式就是Text按照自身的内容来自动调整Width值。这就是我们要介绍的内容大小适配器 (Content Size Fitter)组件,接下来,我们就给Text添加这个组件。

Content Size Fitter 组件主要是用来设置UI元素的长宽。该组件只有两个属性,分别是Horizontal Fit和Vertical Fit,他们分别是从分别从“水平”和“垂直”两个方向来控制UI元素的宽和高,有三个值可选:

Unconstrained:手动修改UI元素长宽的值,这是默认值。

MinSize:根据UI元素的最小值来调整,不能手动修改长宽的值。

PreferredSize:根据UI元素的内容来调整,不能手动修改长宽的值。

非常明显,这里的PreferredSize正好就能解决我们上面的问题。因此,我们将Horizontal Fit设置为PreferredSize。如下所示

 

修改完毕后,Text里面的内容就显示完整了。

接下来,我们来介绍宽高比适配器 (Aspect Ratio Fitter)组件,该组件也是用来控制UI元素的长和宽。接下来,我们继续创建一个Text2 UI元素,设置它的尺寸为160*30,然后为其添加Aspect Ratio Fitter组件,如下所示

 

该组件下拥有一个Aspect Mode 纵横比模式的属性,默认为None,其他值为:

None                            不使用适合宽高比。

Width Controls Height   宽度控制高度,也就是高度会根据宽度自动调整。

Height Controls Width   高度控制宽度,也就是宽度根据高度自动调整。

Fit In Parent                   适应父对象宽度和高度。

Envelope Parent            覆盖父对象宽度和高度。

当我们选择其中一项(不是None)的时候,就会增加Aspect Ratio宽高比的属性。

很明显,这个就是宽高比率值。如果我们选择的是Width Controls Height的话,高度会根据宽度自动调整,调整的参数就是 高度 = 宽度 / Aspect Ratio (5.333333)。我们初始化Text的宽度为160,那么高度就应该是 160 / 5.333333 = 30(正好对应初始化高度值)。那么,我们就修改这个Aspect Ratio 为 2.0 试试,那么推算Text的高度应该变成 80

 

很明显,Text的高度已经改变了。关于Fit In Parent和Envelope Parent 两个的区别,我们也说明一下吧。当然,这个需要为我们的Text添加一个父类UI元素。例如,我们首先添加一个Panel的父类UI对象,设置它的尺寸为200*100,然后添加子对象Text3(默认160*30)。

我们将Text3的轴心放置到左上角,然后锚点也设置到左上角,然后设置PosX和PosY的值为零,那么Text3就会被放置到父类Panel的左上角位置。

 

 

接下来,我们就给Text3添加Aspect Ratio Fitter组件。然后我们将Aspect Mode修改为Fit In Parent,同时将Aspect Ratio值修改为1,也就是让宽和高一样。如下所示

那么显示的效果如下

我们父类Panel的尺寸为200*100,并且Text3的宽高比为1。如果要让Text3根据1:1 的比率来适应父类Panel的话,那么Text3的尺寸应该有两种可能,一个是200*200,另一个是100*100。很明显Fit In Parent就是100*100,也就是Text3会适应父类Panel,但不会超出父类Panel的区域。如果我们将Aspect Mode修改为Envelope Parent的话,如下所示

很明显,Text3的尺寸就是200*200,也就是从高度上来讲,它将超出父类Panel的区域。

这就是Fit In Parent和Envelope Parent的区别。

本课程涉及的内容已经共享到百度网盘:https://pan.baidu.com/s/1e1jClK3MnN66GlxBmqoJWA?pwd=b2id

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/19159.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业论文内容参考|基于神经网络的网络安全态势感知技术研究

文章目录 导文文章重点摘要前言绪论课题背景国内外现状与趋势课题内容相关技术与方法介绍技术分析技术设计技术实现总结与展望导文 基于神经网络的网络安全态势感知技术研究 文章重点 摘要 随着互联网的快速发展,网络攻击的频率和复杂度也在逐年增加。为了更好地保护信息系统…

【Python】【进阶篇】27、Django url标签详解

目录 27、Django url标签详解1. url标签基本使用2. 给定参数的动态url 27、Django url标签详解 在 Django 的模板语言中除了我们前面章节介绍过的 if 标签和 for 标签之外,还有许多我们时常用到标签,比如 url 标签。 1. url标签基本使用 Django 的模板…

4.6k Star,SpringBoot+Vue+App+硬件实现的智能家居系统,一套带走

今天,推荐一个智能家居系统项目。这是我目前见过的最好的智能家居系统项目,功能完整,代码结构清晰。值得推荐。 4.6k Star,SpringBootVueApp硬件实现的智能家居系统,一套带走 简介 FastBee是一个简单易用的物联网平…

【设计模式】责任链模式的介绍及其应用

责任链的介绍 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求&a…

谷歌浏览器 | Chrome DevTools系统学习篇-Device Mode

大家好,文接上回谷歌浏览器 | Chrome DevTools系统学习篇-概述。所谓“工欲善其事,必先利其器”,我们进一步来熟悉谷歌开发者工具。今天分享的是Device Mode,使用设备模式来估算您的页面在移动设备上的外观和性能。 设备模式是 Ch…

QT多线程基础

文章目录 前言一、多线程概念介绍二、创建一个线程三、start和terminate函数四、如何不使用terminate函数终止线程总结 前言 本篇文章来讲解一下QT中的多线程使用方法。 其实线程这个概念对于我们来说并不陌生,main函数在多线程中一般就被称为主线程。 在QT中&am…

如何在IVD行业运用IPD?

IVD(体外诊断,In Vitro Diagnostic)是指对人体样本(血液、体液、组织)进行定性或定量的检测,进而判断疾病或机体功能的诊断方法。IVD目前已经成为疾病预防、诊断治疗必不可少的医学手段,约80%左…

这才是 玩转Github 的正确姿势

这才是 玩转Github 的正确姿势 GitHub各位应该都很熟悉了,全球最大的开源社区,也是全球最大的同性交友网站~~,但是大部分同学使用GitHub应该就是通过别人的开源链接,点进去下载对应的项目,而真正使用Github来查找开源…

camunda的Java委托如何使用

一、camunda的Java委托有什么用途 在Camunda中,Java委托是一种用于在流程执行期间执行自定义逻辑的Java类。使用Java委托,您可以在流程执行期间通过Java代码实现各种复杂的业务逻辑。 以下是一些使用Java委托的常见用途: 1、计算值&#x…

有什么好用的云渲染?

在CG制作流程中,离线渲染一直是必要且耗时的环节。你的场景越复杂,渲染出现问题的可能性就越大,尤其是当你独自工作,没有人给你建议的时候,灯光、模型、场景任何一个环节渲染时出现问题都可能让你焦头烂额,…

基于Kubernetes集群构建大中型企业CICD应用平台(2)--code阶段工具gitlab安装

这里我们为gitlab服务器准备一台虚拟机:192.168.19.6-gitlab服务器 在code阶段,我们需要将不同版本的代码存储到一个仓库中,常见的版本控制工具就是SVN或者Git,这里我们采用Git作为版本控制工具,GitLab作为远程仓库。…

5 创建映射

5 映射 上边章节安装了ik分词器,如果在索引和搜索时去使用ik分词器呢?如何指定其它类型的field,比如日期类型、数 值类型等。 本章节学习各种映射类型及映射维护方法。 5.1 映射维护方法 1、查询所有索引的映射: GET&#xf…

Linux性能监控与调优工具

Linux性能监控与调优工具 文章目录 Linux性能监控与调优工具1.使用top、 vmstat、 iostat、 sysctl等常用工具2.使用高级分析手段, 如OProfile、 gprof4.使用LTP进行压力测试5.使用Benchmark评估系统 除了保证程序的正确性以外, 在项目开发中往往还关心性…

jenkins配置springcloudalibaba流水线加服务器自动构建

参数化构建过程 Extended Choice Parameter Name:project_name Description:请选择需要构建的项目名称 Basic Parameter Types Parameter Type: Hidden Number of Visible Items: 20 Delimiter: , Choose Source for Value value: deerchain-gateway-95…

并发编程06:volatile与JMM

文章目录 6.1 被volatile修饰的变量有两大特点6.2 内存屏障(面试重点)6.2.1 生活case6.2.2 是什么6.2.3 内存屏障分类6.2.4 困难内容 6.3 volatile特性6.3.1 保证可见性6.3.2 没有原子性6.3.3 指令禁重排 6.4 如何正确使用volatile6.5 本章最后的小总结6…

我怎样一步一步引导ChatGPT写完一篇本科毕业论文

先了解毕业论文相关专家 给ChatGPT指定一个角色 我给ChatGPT指定一个学术导师角色,好家伙,给我谦虚起来了 好,换个方式,他开始听话了 了解论文格式 计算机科学与技术专业论文一般有哪些部分组成 选题 了解方向 请先告诉我计算…

提升自我数据分析能力的根本,是方法论!

很多人问,我是财务,能转行业做BI吗?我该学些什么?该掌握哪些技能?该如何学习?我是学生,在校期间专业不扎实,该怎么办?我是小白,还能学会数据分析吗&#xff1…

初识HTML的基础知识点!!!

初识HTML!!! 一、系统构架 1.B/S构架 (1)B/S构架(Browser / Server) 就是(浏览器/服务器的交互形式) Browser支持HTML、CSS、JavaScript (2)优缺点 优点…

webhub123整理 中文语音识别数据集​

我们收集和整理了常用的中文语音识别数据集,合计超过12000小时的数据集。已经按照不同来源整理收录到 webhub123整理 中文语音识别数据集​https://www.webhub123.com/#/home/detail?projectHashid64335220&ownerUserid22053727 整理后的效果如下 ​ 每个卡片…

C++11实现线程池

1.所有权的传递 适用移动语义可以将一个unique_lock赋值给另一个unique_lock,适用move实现。 void myThread1() {unique_lock<mutex> myUnique (testMutex1,std::defer_lock);unique_lock<mutex>myUnique1(std::move(myUnique));//myUnique 则实效 myUnique1 相当…