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

2023-09-15 07:50:59

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);
 // 设置默认对齐单位是 px
 widget!.bottom = 50;
 widget!.top = 50;

// 设置对齐单位是 %
widget!.isAbsoluteTop = false;
widget!.isAbsoluteBottom = false;
widget!.bottom = 0.1; // 10%
widget!.top = 0.1; // 10%

更多推荐

Ubuntu上安装Docker的步骤和指南

Ubuntu上安装Docker的步骤和指南安装docker简介更新系统安装Docker依赖添加Docker官方GPG密钥添加Docker软件源安装DockerEngine启动Docker服务验证安装查看docker版本卸载docker停止容器卸载Docker软件包删除Docker配置文件和数据删除Docker用户组(可

vue 引入zTree

下载js包解压后找个地方放文件夹内引入import"@/common/zTree/js/jquery-1.4.4.min"import"@/common/zTree/js/jquery.ztree.core.min.js"import"@/common/zTree/js/jquery.ztree.excheck.min

SpringBoot2.0(mybatis-plus初始使用)

目录一,介绍二,SpringBoot2.x整合MybatisPlus+Lombok2.1,添加依赖`pom`2.2,配置数据库信息`application.properties`2.3,工程结构初始化三,创建接口返回统一对象四,创建bean五,创建mapper六,创建service6.1,创建impl七,创建contr

如何在Vue 3项目中使用Jest配置生成测试报告

1.介绍在Vue3项目中使用Jest进行单元测试是一种常见的做法,它可以帮助我们验证代码的正确性和稳定性。而生成测试报告可以帮助我们更好地了解测试覆盖率和测试结果,以便更好地优化和改进我们的代码。本文将介绍如何在Vue3项目中配置Jest,以生成测试报告。2.安装Jest首先,我们需要在Vue3项目中安装Jest。可以

Unity中Shader特性PerRendererData

文章目录前言一、优化前是对使用了相同材质球的不同物体间shader分别设置,比较消耗性能二、使用[PerRendererData]标签,可以在脚本中使用SetPropertyBlock()对使用同一材质球的不同物体进行修改其Shader属性前言Unity中Shader特性PerRendererData一、优化前是对使用

科技资讯|Canalys发布全球可穿戴腕带设备报告,智能可穿戴增长将持续

市场调查机构Canalys近日发布报告,表示2023年第2季度全球可穿戴腕带设备出货量达4400万台,同比增长了6%。主要归功于其亲民的价格以及消费者对价位较高的替代品仍持谨慎态度,基础手环市场尽管与去年同期相比有所下降,仍然保持稳定的市场份额,约为19%。可穿戴设备仍然具有长期的发展前景。尽管短期经济因素使消费者更倾

聊聊Spring中循环依赖与三级缓存

先看几个问题什么事循环依赖?什么情况下循环依赖可以被处理?spring是如何解决循环依赖的?什么是循环依赖?简单理解就是实例A依赖实例B的同时B也依赖了A@ComponentpublicclassA{//A中依赖B@AutowiredprivateBb;}@ComponentpublicclassB{//B中依赖A@A

spring boot 八、 sharding-jdbc 分库分表 按月分表

在项目resources目录下新建com.jianmu.config.sharding.DateShardingAlgorithm文件新增yaml配置数据源spring:shardingsphere:props:sql:#是否在日志中打印SQLshow:true#打印简单风格的SQLsimple:truedatasou

JavaWeb概念视频笔记

学习地址:102.尚硅谷_Tomcat-Tomcat服务器和Servlet版本的对应关系_哔哩哔哩_bilibili目录1.JavaWeb的概念2.Web资源的分类3.常用的Web服务器4.Tomcat服务器和Servlet版本的对应关系5.Tomcat的使用a.安装b.目录介绍c.如何启动Tomcat服务器另一种启动

9.19号作业

2>完成文本编辑器的保存工作widget.h#ifndefWIDGET_H#defineWIDGET_H#include<QWidget>#include<QFontDialog>#include<QFont>#include<QMessageBox>#include<QDebug>#include<QColorDia

[npm]脚手架本地全局安装1

[npm]脚手架本地全局安装1npmlink全局安装npminstall全局安装卸载全局安装的脚手架该文章是你的脚手架已经开发完成的前提下,你想要本地全局安装该脚手架,便于本地使用脚手架的命令的情况npmlink全局安装如果本地开发的项目是个脚手架,只是个人使用,也并不需要上传到npm或者私库,如何安装本地的项目到包的

热文推荐