第四十六章 Unity 布局(上)

这篇具有很好参考价值的文章主要介绍了第四十六章 Unity 布局(上)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学习了UI元素的使用,并不能构建出一个完整的UI界面,我们需要使用一些方法将这些UI元素按照“设计稿”的效果,将其摆放到对应的位置上。如何摆放这些UI元素,就是我们需要讲的“布局”,当然这需要借助一些布局组件来完成。我们知道在画布Canvas下的每个UI元素都会自动添加 Rect Transform 组件来控制自身的位置和大小。通常情况下,基于Rect Transform组件的anchor(锚点)和 pivot(轴点)的特性,可以让UI元素实现依赖父UI元素的定位功能。例如绑定在父UI元素的左上角或正中央,长度和宽度“填充”父UI元素尺寸等。但是这种布局的方式属于“静态布局”,也就是在Unity中提前设置好的,项目运行后不能改变了。因此,如果我们想要实现项目运行中的“动态布局”,就得需要使用另一种方法了。Unity的动态布局包括 Horizontal Layout Group水平布局组件、Vertical Layout Group垂直布局组件和Grid Layout Group网格布局组件。

首先,我们先介绍Horizontal Layout Group组件。

我们新建一个“SampleScene4.unity”场景,然后添加一个Text UI 元素,如下所示

第四十六章 Unity 布局(上)

 第四十六章 Unity 布局(上)

默认情况下,Text的尺寸是160*30的大小。请注意,这个Horizontal Layout Group组件需要附加到父类UI元素中。因此,我们需要创建一个“Panel”的UI元素,我们称之为面板容器。它的作用就是充当父类UI元素,用来放置子类UI元素的。

第四十六章 Unity 布局(上)

 第四十六章 Unity 布局(上)

我们发现这个“Panel”面板容器并没有特殊的组件,唯一的就是Image组件而已。并且“Panel”的锚点是一个矩形,它的尺寸就是父类Canvas的大小。也就是说,这个“Panel”面板容器会“撑满”父类Canvas画布。接下来,我们调节“Panel”的锚点(将矩形的四个点拖拽到一个点上去)和尺寸(300*300)来改变的位置和大小。如下所示

第四十六章 Unity 布局(上)

 第四十六章 Unity 布局(上)

接下来,我们要做的就是要让这个“Panel”充当父类UI元素,我们之前创建的Text UI元素作为它的子元素。操作非常简单,只需要在层次面板中,将Text拖动到Panel上面即可。

第四十六章 Unity 布局(上)

 第四十六章 Unity 布局(上)

该操作并不会影响到场景视图中的UI变化。

接下来,我们就需要给这个“Panel”添加水平布局组Horizontal Layout Group组件。

第四十六章 Unity 布局(上)

水平布局组Horizontal Layout Group组件将其子UI元素并排放置(水平方向)在一起。子UI元素的宽度根据各自的最小宽度、偏好宽度和灵活宽度决定。当我们为Panel添加了Horizontal Layout Group组件后,我们发现Text的位置也发生了变化。

第四十六章 Unity 布局(上)

这个Text由原来的位置移动到了Panel的左上方位置。这说明Horizontal Layout Group组件起作用了。接下来,我们就来介绍Horizontal Layout Group组件的一些属性。

第四十六章 Unity 布局(上)

Padding布局组边缘内的填充。它分为left,right,top,bottom四个数值,分别代表布局组四个方向的边缘。默认情况下,布局组的子UI元素会紧贴着布局组,如果我设置了Padding的话,子UI元素就会与布局组产生Padding数值的间距。说白了,就是不让子UI元素紧贴布局组而已。熟悉Web网页开发的人员应该对这个Padding非常熟悉了。

Spacing布局元素之间的间距,它影响的是子UI元素之间的间隔距离。说白了,就是不想让子UI元素与子UI元素之间紧贴在一起。

Child Alignment用于子UI元素的对齐方式,默认值为Upper Left,也就是在最上面左对齐。当然还有其他值可供选择:Upper Left,Upper Center,Upper Right,Middle Left,Middle Center,Middle Right,Lower Left,Lower Center,Lower Right。根据英文单词,我们就大概知道这些值的含义了。这里就不再解释了,大家可以自己修改试一试。

Control Child Size  布局组是否控制其子布局元素的宽度和高度。说白了,就是父UI元素控制子UI元素的尺寸。默认值是没有勾选,也就是父UI元素不控制子UI元素的尺寸。

Use Child Scale在为子UI元素调整大小的时候,布局组是否考虑其子UI元素的缩放(scale属性不为1)。也就是说,如果子UI元素进行过缩放,那么就按照缩放后的宽高进行排版。

Child Force Expand是否要强制子UI元素扩展以填充额外的可用空间。默认是勾选状态。也就是说,当父类UI元素有多余的空间时候,子UI元素会根据Layout Element中设置其尺寸。

为了演示水平布局组的效果,我们在Panel的下面再添加一个Text2 UI元素。

也就是说,Panel下面有两个文本 UI子元素。

第四十六章 Unity 布局(上)

 第四十六章 Unity 布局(上)

我们发现两个Text UI 元素在水平方向上面依次放置在Panel的最上面。由于Panel的宽度为300,而两个Text的总宽度为 160 + 160 = 320,因此两个Text 超出了Panel的范围。这种情况下,我们有两种解决办法,一个是直接修改Text的Rect Transform里面的Width属性。另一种方式就是修改布局。我们下一个章节介绍如何修改。

本课程涉及的内容已经共享到百度网盘:https://pan.baidu.com/s/1e1jClK3MnN66GlxBmqoJWA?pwd=b2id文章来源地址https://www.toymoban.com/news/detail-437711.html

到了这里,关于第四十六章 Unity 布局(上)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 算法训练第四十六天

    139. 单词拆分 - 力扣(LeetCode) 总结:自己一开始想的利用回溯来解决但是也考虑到可能会超时,从动归角度入手,自己没有弄清楚dp数组的含义而导致没有正确解决问题,此题的dp数组是当字符串的子串长度为i时,dp[i]表示能否用给定字典中的串表示出来,此题是一个排列的

    2024年02月11日
    浏览(43)
  • 第四十六节 Java 8 Stream

    Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。 Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。 Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。

    2024年04月23日
    浏览(36)
  • order by之后的injection(sqllabs第四十六关)

    这一关的sql语句是利用的order by 根据输入的id不同数据排序不一样可以确定就是order by order by后面无法使用ubion注入(靠找不到) 可以利用后面的参数进行攻击 1)数字 没作用考虑布尔类型 rand和select ***都可以 或者利用and 或者报错注入(延时注入也是可以的) 2))procedure analys

    2024年02月03日
    浏览(30)
  • 小白到运维工程师自学之路 第四十六集 (mongodb复制集)

           1、 MongoDB复制集(MongoDB Replica Set)是MongoDB提供的一种高可用性和数据冗余的解决方案。它由多个MongoDB实例组成,其中一个作为主节点(Primary),其他节点则扮演从节点(Secondary)的角色。主节点处理所有的写操作和客户端请求,而从节点负责复制主节点的数据并

    2024年02月13日
    浏览(49)
  • 【AI视野·今日NLP 自然语言处理论文速览 第四十六期】Tue, 3 Oct 2023

    AI视野 ·今日CS.NLP 自然语言处理论文速览 Tue, 3 Oct 2023 (showing first 100 of 110 entries) Totally 100 papers 👉 上期速览 ✈更多精彩请移步主页 It\\\'s MBR All the Way Down: Modern Generation Techniques Through the Lens of Minimum Bayes Risk Authors Amanda Bertsch, Alex Xie, Graham Neubig, Matthew R. Gormley 最小贝叶斯风险 M

    2024年02月08日
    浏览(52)
  • 算法第四十一天-排除排序链表中的重复元素Ⅱ

    题意:在一个 有序 链表中,如果一个节点的值出现不止一次,那么把这个节点删除掉 重点: 有序链表 ,所以,一个节点的值出现不止一次,那么他们必相邻。 方法一:递归 链表和树的问题,一般都可以有递归和迭代两种写法。对于本题一定要记住是有序链表,值相同的节

    2024年04月11日
    浏览(97)
  • 第五十六章 Unity 音频播放

    Unity可以导入大多数标准音频文件格式,精通于在3D 空间中播放声音,还可根据需要提供其他效果。虽然播放声音是一件非常简单的事情,但是为了模拟现实直接中的各种声音效果,Unity会提供各种各样的组件来实现。 首先,我们需要了解“多普勒效应”。他是一名奥地物理

    2024年02月07日
    浏览(40)
  • 代碼隨想錄算法訓練營|第四十六天|完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ。刷题心得(c++)

    目录 动态规划 - 完全背包 和01背包的差別 定義 核心代碼 遍歷順序 總結 讀題 518. 零钱兑换 II 自己看到题目的第一想法 看完代码随想录之后的想法 377. 组合总和 Ⅳ 自己看到题目的第一想法 518. 零钱兑换 II - 實作 思路 Code 377. 组合总和 Ⅳ - 實作 思路 Code 總結 自己实现过

    2024年02月08日
    浏览(42)
  • 第十六章 Unity 预制件prefab(上)

    本章节我们介绍一下“预制件”,也有人叫“预制体”,也就是Prefab。在游戏世界中,那些自然环境的游戏对象,我们可以提前创建在场景中,这个大家能够理解。但是,有些游戏对象,需要根据游戏逻辑来通过代码生成,例如刷新怪物,触发机关等等。Unity 的预制件系统允许

    2024年02月08日
    浏览(56)
  • 第二十六章 Unity碰撞体Collision(上)

    在游戏世界中,游戏物体之间的交互都是通过“碰撞接触”来进行交互的。例如,攻击怪物则是主角与怪物的碰撞,触发机关则是主角与机关的碰撞。在DirectX课程中,我们也大致介绍过有关碰撞检测的内容。游戏世界中的3D模型的形状是非常复杂的,我们不可能按照模型的原

    2024年02月04日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包