【CocosCreator入门】CocosCreator组件 | Widget(对齐)组件

news2024/9/21 10:56:27

       Cocos Creator 是一款流行的游戏开发引擎,具有丰富的组件和工具,其中的Widget组件用于UI布局和调整,可以通过调整Widget组件来实现UI元素的自适应和排版。


目录

一、组件介绍

二、组件属性

三、组件使用

四、脚本示例


一、组件介绍

       在Cocos Creator中,所有的UI元素都是基于Canvas节点来实现的,而Widget组件就是Canvas节点下的一个子节点,它可以控制Canvas下所有子节点的位置、大小和对齐方式等属性,从而实现UI的灵活布局。

二、组件属性

属性说明备注
Top对齐上边界选中后,将在旁边显示一个输入框,用于设定当前节点的上边界和父物体的上边界之间的距离。
Bottom对齐下边界选中后,将在旁边显示一个输入框,用于设定当前节点的下边界和父物体的下边界之间的距离。
Left对齐左边界选中后,将在旁边显示一个输入框,用于设定当前节点的左边界和父物体的左边界之间的距离。
Right对齐右边界选中后,将在旁边显示一个输入框,用于设定当前节点的右边界和父物体的右边界之间的距离。
HorizontalCenter水平方向居中
VerticalCenter竖直方向居中
Target对齐目标指定对齐参照的节点,当这里未指定目标时会使用直接父级节点作为对齐目标。
当父节点是整个场景时,则对齐到屏幕的可见区域(visibleRect),可用于将 UI 停靠在屏幕边缘。
Align Mode指定 widget 的对齐方式,用于决定运行时 widget 应何时更新通常设置为 ON_WINDOWS_RESIZE,仅在初始化和每当窗口大小改变时重新对齐。
设置为 ONCE 时,仅在组件初始化时进行一次对齐。
设置为 ALWAYS 时,每帧都会对当前 Widget 组件执行对齐逻辑。

①Align Mode

       对齐方式,决定Widget组件对齐的参考对象。例如,如果选择了“HORIZONTAL_CENTER”,则Widget组件会相对于Canvas节点的水平中心对齐。

②Left、Right、Top、Bottom

       控制Widget组件相对于参考对象的边距。例如,如果选择了“HORIZONTAL_CENTER”对齐方式,并设置了Left和Right属性,则Widget组件会相对于Canvas节点的水平中心对齐,并且距离Canvas节点的左右边缘分别为Left和Right。

③Horizontal、Vertical

       控制Widget组件的位置。例如,如果选择了“HORIZONTAL_CENTER”对齐方式,并设置了Horizontal属性,则Widget组件会相对于Canvas节点的水平中心对齐,并且距离Canvas节点的水平中心的距离为Horizontal。

④Target

       参考对象,指定Widget组件对齐的参考对象。可以选择Canvas节点、Parent节点或其他节点作为参考对象。

⑤Is Absolute Width、Is Absolute Height

       是否使用绝对宽度和高度。如果选择了这两个属性,那么Widget组件将会忽略Canvas节点的缩放,直接使用设置的宽度和高度。如果不选择这两个属性,那么Widget组件将会根据Canvas节点的缩放自动计算宽度和高度。

⑥Is Align Once

       是否只对齐一次。如果选择了这个属性,那么Widget组件只会在初始化时对齐一次,不会在Canvas节点缩放或其他事件发生时重新对齐。如果不选择这个属性,那么Widget组件会在每次Canvas节点缩放或其他事件发生时重新对齐。

⑦Left、Right、Top、Bottom、Horizontal、Vertical Priority

       控制Widget组件的优先级。如果有多个Widget组件设置了相同的对齐方式或边距,那么优先级高的Widget组件会覆盖优先级低的Widget组件。

三、组件使用

使用Widget组件的步骤如下:

  1. 在Canvas节点下创建一个子节点。
  2. 在子节点上添加Widget组件。
  3. 根据需要设置Widget组件的属性,例如对齐方式、边距、位置等。
  4. 在子节点下添加其他UI元素,例如Label、Button等。 通过调整Widget组件的属性,可以实现UI元素的自适应和排版。

四、脚本示例

创建节点和Widget组件

       首先,我们需要创建一个节点,并添加Widget组件。可以使用以下代码:

let node = new cc.Node(); // 创建节点
let widget = node.addComponent(cc.Widget); // 添加Widget组件

设置对齐方式和边距

       接下来,我们需要设置Widget组件的对齐方式和边距。可以使用以下代码:

widget.alignMode = cc.Widget.AlignMode.HORIZONTAL_CENTER; // 设置水平居中对齐
widget.left = 10; // 设置左边距为10
widget.right = 10; // 设置右边距为10

设置大小和位置

       最后,我们需要设置节点的大小和位置,以便Widget组件可以正确地对齐和布局UI元素。可以使用以下代码:

node.setContentSize(200, 100); // 设置节点大小为200x100
node.setPosition(cc.v2(0, 0)); // 设置节点位置为屏幕中心

        通过以上代码,我们成功地创建了一个居中对齐、左右边距为10的节点,并设置了节点大小和位置。我们可以在这个节点下添加其他UI元素,实现UI的自适应和排版。

下面是一个使用Widget组件实现自适应UI布局的示例代码:

cc.Class({
    extends: cc.Component,
    properties: {
        node: cc.Node, // 需要自适应的节点
        align: cc.Widget.AlignMode, // 对齐方式
        left: cc.Integer, // 左边距
        right: cc.Integer, // 右边距
        top: cc.Integer, // 上边距
        bottom: cc.Integer, // 下边距
        width: cc.Integer, // 宽度
        height: cc.Integer, // 高度
        x: cc.Integer, // X坐标
        y: cc.Integer, // Y坐标
    },
    onLoad () {
        let widget = this.node.addComponent(cc.Widget);
        widget.alignMode = this.align;
        widget.left = this.left;
        widget.right = this.right;
        widget.top = this.top;
        widget.bottom = this.bottom;
        this.node.setContentSize(this.width, this.height);
        this.node.setPosition(cc.v2(this.x, this.y));
    },
    // update (dt) {},
});

       总之,使用Cocos Creator的Widget组件可以帮助我们快速实现自适应UI布局。通过设置对齐方式、边距、大小和位置等属性,可以让UI元素根据屏幕大小和分辨率进行自适应,从而提高游戏的兼容性和用户体验。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python中的统计学(二)

大数定律和中心极限定律都是概率论中重要的定理。它们之间的不同在于它们所涉及的随机变量和极限的不同。 大数定律是指随着样本容量的增大,样本均值越来越接近于总体均值的定律。即样本均值的极限等于总体均值,也就是说,当样本量足够大时&a…

绝了!!PDF转换没想到这么简单

PDF处理是很多小伙伴的“痛”,在工作学习中,PDF转换、PDF编辑、PDF和图片的各种问题都是需要快速解决的,但市面上不少付费的软件让我们很是肉痛! 今天给大家推荐5个免费的神仙PDF转换网站,解决你的所以PDF问题~ 记得…

Simulink 自动代码生成电机控制:硬件开发板系统介绍

目录 前言 电源电路 MCU电路 开发板接口 关于电流采样和过流保护 驱动部分 总结 前言 在介绍开发板之前突然有感而发想多说两句,本人从事电控行业也是有一些年头了,除了刚刚毕业就接触的电机控制外,就是电源控制相关的,像三相P…

Point-to Analysis指针分析(2)

https://blog.csdn.net/qq_43391414/article/details/111046505 下面介绍一种新的指针分析的算法Steensgaard算法,并将其与上一篇文章介绍 Steensgaard算法 不同于Andersen算法,Steensgaard在前者的基础上,再次对问题进行了简化,从而指针分析…

远程访问及控制

目录 一、SSH远程管理 1)SSH的简介 2)SSH的优点 3)常用的SSH软件的介绍 4)SSH 的组成 5)SSH的密钥登录 密钥登录的过程: 二、SSH的运用 1 )SSH配置文件信息 2)存放ssh服务…

JAVA 进程CPU过高排查

1. top命令看一下JAVA进程: 占用500%多,非常恐怖,程序卡得动不了了。 2. 使用命令top -H -p PID 此处PID就是上一步获取的进程PID,我的PID是13342,通过此命令可以查看实际占用CPU最高的的线程的ID,此处几位…

ChatGPT+Ai绘图【stable-diffusion实战】

ai绘图 stable-diffusion生成【还有很大的提升空间】 提示词1 Picture a planet where every living thing is made of light. The landscapes are breathtakingly beautiful, with mountains and waterfalls made of swirling patterns of color. What kind of societies m…

【学习笔记】unity脚本学习(五)【常用的方法函数Destroy、Instantiate 、SendMessage、invoke 、Coroutine】

目录 常用的方法函数Object体系结构MonoBehaviour复习继承的变量 继承自Object的方法Destroy 物体的销毁DestroyImmediate 立即销毁对象(强烈建议您改用 Destroy)Object.DontDestroyOnLoadObject.Instantiate 物体的生成类子弹生成案例 继承自Component的…

八股+面经

文章目录 项目介绍1.不动产项目数据机器学习算法调研图像提取算法调研数据集-ImageNetXceptionVGGInceptionDensenetMobilenet 2.图书项目技术栈面试问题 Java基础MapHashMap v.s Hashtable(5点)ConcurrentHashMap v.s Hashtable(2点)代理模式1. 静态代理2. 动态代理2.1 JDK 动…

什么样的人适合学习网络安全?怎么学?

有很多想要转行网络安全或者选择网络安全专业的人在进行决定之前一定会有的问题:什么样的人适合学习网络安全?我适不适合学习网络安全? 会产生这样的疑惑并不奇怪,毕竟网络安全这个专业在2017年才调整为国家一级学科,…

elasticsearch——数据同步

目录 数据同步思路分析 方案一:同步调用 方案二:异步通知 方案三:监听binlog 区别 关于elasticsearch与数据库数据同步 导入课前资料提供的hotel-admin项目,启动并测试酒店数据的CRUD 声明exchange、queue、RoutingKey 导…

Python列表和字典前面为什么会加星号(**)?

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 python 中,单星号*和双星号**除了作为“乘”和“幂”的数值运算符外, 还在列表、元组、字典的操作中有着重要作用。 一、列表(list)、元组(tuple&#xff09…

flac格式如何转换为mp3,这3个方法超好用

随着音频格式的不断创新和发展,每种格式对应不同的特点。比如像flac格式可以提供无损音质的体验,但它的文件大小却是相对较大,不太适合在普通设备上进行传输和使用。而mp3作为一种流行的音频格式,它的压缩率较高,不但可…

OceanBase 4.1解读:我们想给用户一个开箱即用的OceanBase部署运维工具

欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/ 关于作者 肖磊 OceanBase 产品专家 负责 OceanBase 运维管控体系产品规划与设计,包括安装部署工具(OBD、OAT)、运维管控平台(OCP、OCP Express),致力…

MySQL安装步骤详解

MySQL环境搭建 MySQL的下载 MySQL的4大版本 MySQL Community Server 社区版本,开源免费,自由下载,但不提供官方技术支持,适用于 大多数普通用户。 MySQL Enterprise Edition 企业版本,需付费,不能在线下载…

运行torch心得体会

遇到的问题: ①ModuleNotFoundError: No module named torch ②‘conda‘不是内部或外部命令,也不是可运行的程序或批处理文件。 ③import torch 提示找不到指定的模块visual C redistributable is not installed 过程: 用前一段时间就下…

流程图拖拽视觉编程--概述

一般的机器视觉平台采用纯代码的编程方式,如opencv、halcon,使用门槛高、难度大、定制性强、开发周期长,因此迫切需要一个低代码开发的视觉应用平台。AOI缺陷检测的对象往往缺陷种类多,将常用的图像处理算子封装成图形节点,如抓直…

「C/C++」C/C++强制类型转换

博客主页:何曾参静谧的博客 文章专栏:「C/C」C/C学习 目录 相关术语C语言中的强制类型转换C中的强制类型转换static_castdynamic_castreinterpret_castconst_cast 注意事项 相关术语 强制类型转换:是指将一个数据类型强制转换为另一个数据类型…

magic Grid

说明文档 A lightweight Javascript library for dynamic grid layoutshttps://vuejsexamples.com/a-lightweight-javascript-library-for-dynamic-grid-layouts/npm npm install magic-grid cnd <script src"https://unpkg.com/magic-grid/dist/magic-grid.cjs.js…

【C++ 七】类和对象:封装、继承、多态、友元、运算符重载

封装、继承、多态、对象的初始化和清理、C对象模型和this指针、友元、运算符重载 文章目录 封装、继承、多态、对象的初始化和清理、C对象模型和this指针、友元、运算符重载前言1 封装1.1 封装的意义1.1.1 封装意义一1.1.2 封装意义二 1.2 struct 和 class 区别1.3 成员属性设置…