CocosCreator3.8研究笔记(十七)CocosCreator UI组件(一)


CocosCreator 中,用户界面 User-interface(UI)组件和2d渲染对象的区别在于2D 渲染对象一般只负责将2D 对象渲染出来,而 UI 则更多的承担着用户交互的能力。


常用的 UI 控件可通过添加节点的方式来创建。

层级管理器 中点击左上角的 + 创建节点按钮,然后选择 UI 来创建所需的 UI 节点,相应的 UI 组件便会自动挂载到节点上:


在这里插入图片描述


其它的 UI 组件,可以手动在 层级管理器 中选中节点,然后在 属性检查器 中点击 添加组件 -> UI 的方式来添加:


在这里插入图片描述


接下来,就一一介绍常用的UI组件使用和注意事项,由于UI组件内容较多,篇幅原因,后续将持续进行介绍。


这篇文章主要介绍Canvas 组件、UITransform 组件、Widget 组件 。


想了解常用的 2D 渲染对象,请查看 CocosCreator3.8研究笔记(十六)CocosCreator 2D对象。


一、Canvas 组件


(1)、Canvas 组件的作用


Canvas(画布) 组件继承自 RenderRoot2D 组件,因此Canvas 组件是数据收集入口。


场景中 Canvas 节点可以有多个,所有 2D 渲染元素都必须作为 RenderRoot2D 的子节点才能被渲染


Canvas 节点除了继承自 RenderRoot2D 的数据入口能力,其本身还作为屏幕适配的重要组件,在游戏制作上面对多分辨率适配也起到关键作用。


Canvas 的设计分辨率和适配方案统一通过 项目设置 配置。


在这里插入图片描述


(2)、Canvas 组件的属性

属性功能说明
CameraComponentCanvas 关联的相机,此相机不一定会渲染 Canvas 下内容,可以与 AlignCanvasWithScreen 属性配合自动改变 Camera 的一些参数使其与 Canvas 对齐
AlignCanvasWithScreenCanvas 关联的相机是否要与 Canvas 对齐,如果想要自己控制相机位置请勿勾选此选项

(3)、注意事项

如果遇到了 UI 渲染出错,花屏,闪屏等现象,首先要检查的就是场景里所有相机(Camera 和 Canvas)的 ClearFlag,确保 场景里必须有一个相机要执行 Solid_Color 清屏操作


具体如何设置 ClearFlag,可参考以下几种情况:

  • 如果场景中只有一个 UI Canvas 或者 3D Camera,那么 ClearFlag 属性设置为 Solid_Color

  • 如果场景中包含 2D 背景层、3D 场景层、 2D UI 层,则:

    用于 3D 场景渲染的摄像机,请确保第一个渲染的摄像机是 SOLID_COLOR(如果有配置天空盒,则设置为 SKYBOX ),其余摄像机根据项目需求决定。

    用于 UI 渲染(Canvas下面)的摄像机,要用 DEPTH ONLY

    如果某个摄像机的设置了targetTexture,请设置为 SOLID_COLOR


如图:第一个渲染的摄像机 ClearFlag 属性设置为 Solid_Color

在这里插入图片描述


如图: UI 渲染(Canvas下面)的摄像机, ClearFlag 属性设置为 DEPTH ONLY

在这里插入图片描述


二、UITransform组件


(1)、UITransform组件的作用

定义 UI 上的矩形信息,包括矩形的尺寸和锚点位置。

可以通过该组件任意地操作矩形的大小、位置,一般用于渲染、点击事件的计算、界面布局以及屏幕适配等。


(2)、UITransform组件属性

属性功能说明
ContentSizeUI 矩形内容尺寸
AnchorPointUI 矩形锚点位置

(3)、添加 UITransform 组件

点击 属性检查器 下面的 添加组件 按钮,然后选择 UI/UITransform 即可添加 UITransform 组件到节点上。


在这里插入图片描述


(4)、动态修改尺寸和锚点

const uiTransform = this.getComponent(UITransform);
// 方法一
uiTransform.setContentSize(100, 220);
uiTransform.setAnchorPoint(0.5, 0);// 方法二
uiTransform.width = 100;
uiTransform.height = 220;
uiTransform.anchorX = 0.5;
uiTransform.anchorY = 0;

三、Widget 组件


(1)、Widget 的作用

Widget (对齐挂件) 是一个很常用的 UI 布局组件。

能使当前节点自动对齐到父物体的任意位置,或者约束尺寸,可以方便地适配不同的分辨率。


点击 属性检查器 下面的 添加组件 按钮,然后选择 UI/Widget 即可添加 Widget 组件到节点上。


(2)、Widget 选项

选项说明备注
Top对齐上边界选中后,将在旁边显示一个输入框,用于设定当前节点的上边界和父物体的上边界之间的距离。
Bottom对齐下边界选中后,将在旁边显示一个输入框,用于设定当前节点的下边界和父物体的下边界之间的距离。
Left对齐左边界选中后,将在旁边显示一个输入框,用于设定当前节点的左边界和父物体的左边界之间的距离。
Right对齐右边界选中后,将在旁边显示一个输入框,用于设定当前节点的右边界和父物体的右边界之间的距离。
HorizontalCenter水平方向居中
VerticalCenter竖直方向居中
Target对齐目标指定对齐参照的节点,当这里未指定目标时会使用直接父级节点作为对齐目标
AlignMode指定 Widget 的对齐方式,用于决定运行时 Widget 应何时更新通常设置为 ALWAYS,每次节点产生变动时重新对齐。 设置为 ONCE 时,仅在组件初始化时进行一次对齐。ON_WINDOW_RESIZE 时会在每次窗口变动时候更新一次

(3)、Widget 的使用

这里以Spite 节点,添加 Widget 组件为例,进行演示。

下图: 左对齐,上对齐,左、上边距100px。

在这里插入图片描述


下图: 右对齐,下对齐,右、下边距100px。

在这里插入图片描述


下图,垂直居中、水平居中。

在这里插入图片描述


下图:宽度拉伸,高度拉伸,上下边距50px

在这里插入图片描述


(4)、对节点位置、尺寸的限制

如果 Align Mode 属性设为 ALWAYS 时,会在运行时每帧都按照设置的对齐策略进行对齐,组件所在节点的位置(position)和尺寸(width,height)属性可能会被限制,不能通过 API 或动画系统自由修改。


如果需要同时满足对齐策略和可以在运行时改变位置和尺寸的需要,可以通过以下两种方式实现:


  • 确保 Widget 组件的 Align Mode 属性设置为 ONCE,该属性只会负责在组件初始化(onEnable)时进行一次对齐,而不会每帧再进行一次对齐。可以在初始化时自动完成对齐,然后就可以通过 API 或动画系统对 UI 进行移动变换了。


  • 通过调用 Widget 组件的对齐边距 API,包括 topbottomleftright,直接修改 Widget 所在节点的位置或某一轴向的拉伸。这些属性也可以在动画编辑器中添加相应关键帧,保证对齐的同时实现各种丰富的 UI 动画。


(5)、代码修改对齐距离

 const widget = this.getComponent(Widget);// 设置默认对齐单位是 pxwidget!.bottom = 50;widget!.top = 50;// 设置对齐单位是 %
widget!.isAbsoluteTop = false;
widget!.isAbsoluteBottom = false;
widget!.bottom = 0.1; // 10%
widget!.top = 0.1; // 10%

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法宝典1——Java版本(此系列持续更新,这篇文章有20道)(有题目的跳转链接)(此份宝典包含了链表、栈、队列、二叉树的算法题)

注:由于字数的限制,我打算把算法宝典做成一个系列,一篇文章就20题!!! 目录 一、链表的算法题(目前10道) 1. 移除链表元素(力扣;思路:前后指针&…

宋浩概率论笔记(六)样本与统计量

参数估计的入门章节,为后面的参数估计与假设检验铺垫基础,难点在于背诵公式,此外对于统计量的理解一定要清晰——本质是多个随机变量复合而成的函数~

ARM接口编程—Interrupt(exynos 4412平台)

CPU与硬件的交互方式 轮询 CPU执行程序时不断地询问硬件是否需要其服务,若需要则给予其服务,若不需要一段时间后再次询问,周而复始中断 CPU执行程序时若硬件需要其服务,对应的硬件给CPU发送中断信号,CPU接收到中断信号…

MySQL常用函数集锦 --- 字符串|数值|日期|流程函数总结

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 目录 一、字符…

在c#中使用CancellationToken取消任务

目录 🚀介绍: 🐤简单举例 🚀IsCancellationRequested 🚀ThrowIfCancellationRequested 🐤在控制器中使用 🚀通过异步方法的参数使用cancellationToken 🚀api结合ThrowIfCancel…

js创建动态key的对象ES6和ES5的方法

前提: 有个场景,循环数组,根据每一项的值,往一个数组中push一个新对象,对象的key不同要从数组中获取 情况解析:push没有什么问题,问题就是创建一个动态key的对象。下面就说一下如何以参数为key…

第二证券股票分析:什么是赛道股和题材股?

赛道股和题材股是两种经常被出资者关注的股票类型。赛道股是指代表着产业趋势和未来增加方向的上市公司股票,例如新能源汽车、5G通信等。题材股则是针对商场上的某些抢手事情或话题而产生的股票炒作。那么赛道股和题材股有哪些不同之处?在进行这类出资时…

Claude 使用指南 | 可与GPT-4媲美的语言模型

本文全程干货,让你轻松使用上claude,这也是目前体验cluade的唯一途径!废话不多说,直接上教程,cluade的能力不逊于GPT4,号称是ChatGPT4.0最强竞品。相对Chatgpt来说,Claude不仅是完全免费的&…

贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据...

原文链接:http://tecdat.cn/?p22702 贝叶斯回归分位数在最近的文献中受到广泛关注,本文实现了贝叶斯系数估计和回归分位数(RQ)中的变量选择,带有lasso和自适应lasso惩罚的贝叶斯(点击文末“阅读原文”获取…

服务器迁移:无缝过渡指南

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

笔记01:第一行Python

NameError 名字不含特殊符号(只能是英文、数字、下划线、中文等)名字区分大小写名字先定义后使用 SyntaxError 不符合Python语法书写规范除了语法成分中的保留拼写错误输出中文符号if、for、def等语句末尾忘记冒号 IdentationError 缩进错误&#x…

迅为iTOP-RK3568开发板Sobel 算子边缘检测

本小节代码在配套资料“iTOP-3568 开发板\03_【iTOP-RK3568 开发板】指南教程 \04_OpenCV 开发配套资料\32”目录下,如下图所示: Sobel (索贝尔)算子是计算机视觉领域的一种重要处理方法。主要用于获得数字图像的一阶梯度,常见的应用和物理意义是边缘检…

docker swarm集群

集群构建 不包含在任何 Swarm 中的 Docker 节点,称为运行于单引擎(Single-Engine)模式。一旦被加入 Swarm 集群,则切换为 Swarm 模式。第一步我们要做的就是初始化 Swarm。 初始化swarm集群 将本机作为manager节点 docker swar…

举例说明用 easylanguage 语言,编写抄底公式

EasyLanguage 语言在金融领域被广泛使用,尤其是用于编写交易策略和算法。以下是一个简单的抄底公式示例: swift 复制 // 定义变量和参数 Dim StopLossPrice As Double Dim TakeProfitPrice As Double Dim InitialPosition As Double Dim SafetyZon…

Promethus(普罗米修斯)安装与配置(亲测可用)

1. 普罗米修斯概述 Prometheus(是由go语言(golang)开发)是一套开源的监控&报警&时间序列数 据库的组合。适合监控docker容器。 Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包 。自2012年成立以来,许多公司和组织都采用了Prometheus&#…

【Linux进行时】进程状态

进程状态: ❓假设我们在上课,在B站上上课,请问我们的B站是不是一直运行呢?💡不是的! ❓假设我们同时打开了B站和PDF阅读器时,是怎么运行的呢? 💡每一个进程在CPU跑一会&a…

工业RFID进口品牌和国内品牌差距有多大?

随着国内的RFID技术也逐渐发展成熟,国产工业品牌也不断优化,推出了不少高品质、高性能的工业读写器。对于企业来说,在选择读写器的时候也有了更多的选择,那么,现如今工业RFID进口品牌和国内品牌差距有多大,…

深度解析NLP文本摘要技术:定义、应用与PyTorch实战

目录 1. 概述1.1 什么是文本摘要?1.2 为什么需要文本摘要? 2. 发展历程2.1 早期技术2.2 统计方法的崛起2.3 深度学习的应用2.4 文本摘要的演变趋势 3. 主要任务3.1 单文档摘要3.2 多文档摘要3.3 信息性摘要 vs. 背景摘要3.4 实时摘要 4. 主要类型4.1 抽取…

迅为i.MX8mm小尺寸商业级/工业级核心板

尺寸: 50mm*50mm CPU: NXP i.MX8M Mini 主频: 1.8GHz 架构: 四核Cortex-A53,单核Cortex-M4 PMIC: PCA9450A电源管理PCA9450A电源管理NXP全新研制配,iMX8M的电源管理芯片有六个降压稳压器、五…

C#-WinForm-发送邮件

登录QQ邮箱——设置——开启“POP3/SMTP服务” 登陆QQ邮箱→打开设置→开启“POP3/SMTP服务”,获取“授权码” 简单总结一下: 1、使用SmtpClient发送电子邮件是很简单的,只要正确创建了MailMessage对象和SmtpClient就可以很容易的发送出去电…