当前位置: 首页 > news >正文

cocos creator 的 widget组件的使用及踩坑

以下的内容基于cocos creator 3.8版本,如有错误,恳请指出。
👉官方文档的指引

应用:以上官方指引有非常清晰的使用方式,接下来说明一些注意事项:
1、与canvas搭配的使用,解决多分别率适配问题。
关于canvas。而需要注意的是,官方有给出说明,当canvas的alignCanvasWithScreen被设置为true时,canvas 组件随时获得设备屏幕的实际分辨率并对场景中所有渲染元素进行适当的缩放。关于多分辨率适配方案。
不同分辨率下,希望UI相对屏幕边框位置不变时,只需要将UI节点放在canvas下,通过节点的widget组件即可实现。
需要特别注意:canvas千万不要添加widget组件,否则canvas的size无法随屏幕变化而变化。
canvas的代码位于引擎canvas.ts文件中,其中适配屏幕的代码如下:

protected _onResizeCamera () {if (this._cameraComponent && this._alignCanvasWithScreen) {if (this._cameraComponent.targetTexture) {this._cameraComponent.orthoHeight = visibleRect.height / 2;} else {const size = screen.windowSize;this._cameraComponent.orthoHeight = size.height / view.getScaleY() / 2;}this.node.getWorldPosition(_worldPos);this._cameraComponent.node.setWorldPosition(_worldPos.x, _worldPos.y, 1000);}}

2、宽屏窄屏两套适配方案的实现:
有些情况下,从效果考虑,希望UI在窄屏分辨率时,尽量不留白,宽屏分辨率时,适当留白,这种情况下可以使用以下方案:
(1)定义窄屏和宽屏的宽高比例;(此过程通常需要与设计/美术讨论)。
(2)创建一个公共的UI界面,添加canvas。
(3)将界面分割为9宫格的9个节点,9个节点都加入widget组件。
(4)创建json文件,配置9个节点在不同分辨率下与边界的距离。
(5)具体的UI节点按需求放入9个节点中,再调整相对位置即可。
(6)并在加载前读取配置的信息,对9个节点进行widget的边界设置。
(7)界面监听屏幕变化信息,在屏幕变化是更新适配updateAlignment。
(8)各个UI节点的各自播放动画,可以不需要特殊适配。

3、遇到的坑:
(1)如果一个节点不需要widget组件,那必须要将该组件删除;如果不删除widget组件,只是将enabled勾去掉,那当其子节点调用updateAlignment时,改节点的widget组件就会重新生效,可能有意想不到的效果。具体代码在widget-manager.ts中,updateAlignment并不对父节点的widget组件是否生效做校验。

function updateAlignment (node: Node) {const parent = node.parent;if (parent && Node.isNode(parent)) {updateAlignment(parent);}// node._widget will be null when widget is disabledconst widget = node.getComponent(Widget);if (widget && parent) {align(node, widget);}
}

(2)canvas添加了widget组件,界面的size只会是设计分辨率。

相关文章:

cocos creator 的 widget组件的使用及踩坑

以下的内容基于cocos creator 3.8版本,如有错误,恳请指出。 👉官方文档的指引 应用:以上官方指引有非常清晰的使用方式,接下来说明一些注意事项: 1、与canvas搭配的使用,解决多分别率适配问题。…...

Baumer工业相机的EMVA1288 数据报告简介

项目场景: Baumer工业相机堡盟VCX系列和VLX系列为堡盟全系列相机中的主流常用相机和高端相机,性能强大、坚固可靠,易于集成,常用与一般行业的检测定位识别使用。 对应的高端相机系列具有极为丰富的强大技术功能,可轻…...

Docker 安装 中文版 GitLab

Docker 安装系列 安装GitLab、解决服务器内存不足问题、使用域名/IP地址访问项目 1、拉取 [rootTseng ~]# docker pull twang2218/gitlab-ce-zh:latest latest: Pulling from twang2218/gitlab-ce-zh 8ee29e426c26: Pull complete 6e83b260b73b: Pull complete e26b65fd11…...

uni-app 个人课程表页面

uni-app 个人课程表页面 插件参考地址 大部分代码都是参考了上述代码&#xff0c;只对代码做出了优化 1. 页面模板 在 schedule.vue 文件中&#xff0c;编写页面结构&#xff1a; <template><view><u-navbar title"个人中心"><view class&q…...

FPGA工作原理、架构及底层资源

FPGA工作原理、架构及底层资源 文章目录 FPGA工作原理、架构及底层资源前言一、FPGA工作原理二、FPGA架构及底层资源 1.FPGA架构2.FPGA底层资源 2.1可编程输入/输出单元简称&#xff08;IOB&#xff09;2.2可配置逻辑块2.3丰富的布线资源2.4数字时钟管理模块(DCM)2.5嵌入式块 …...

【OpenCV】平滑图像

二维卷积(图像滤波) 与一维信号一样&#xff0c;图像也可以通过各种低通滤波器&#xff08;LPF&#xff09;、高通滤波器&#xff08;HPF&#xff09;等进行过滤。LPF 有助于消除噪音、模糊图像等。HPF 滤波器有助于在图像中找到边缘。 opencv 提供了函数 **cv.filter2D()**&…...

LeetCode300. 最长递增子序列(2024冬季每日一题 30)

给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的 子序列。 示例 1&…...

vue H5如何实现copy功能

vue H5如何实现copy功能 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><link rel"stylesheet" href"https://unpkg.com/vant2.12/lib/index.css" /><title></title><st…...

Golang使用etcd构建分布式锁案例

在本教程中&#xff0c;我们将学习如何使用Go和etcd构建分布式锁系统。分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要。它有助于维护一致性&#xff0c;防止竞争条件&#xff0c;并确保在任何给定时间只有一个进程独占访问资源。 我们将使用Go作为编程语言&am…...

Windows 和 Ubuntu 双系统安装

复现论文的时候&#xff0c;个别包只有Linux版本&#xff0c;并且源码编译比较麻烦&#xff0c;所以干脆直接安装一个双系统&#xff08;WinUbuntu&#xff09;&#xff0c;方便复现论文。 参考视频链接&#xff1a;Windows 和 Ubuntu 双系统的安装和卸载 0.所需工具 4G以上U…...

多媒体文件解复用(Demuxing)过程

多媒体文件的解复用&#xff08;Demuxing&#xff09;过程指的是从一个多媒体容器文件&#xff08;如 MP4、MKV、AVI 等&#xff09;中提取不同类型的多媒体数据流&#xff08;例如视频流、音频流、字幕流等&#xff09;的过程。 容器文件本身并不包含实际的视频或音频数据&…...

从 Zuul 迁移到 Spring Cloud Gateway:一步步实现服务网关的升级

从 Zuul 迁移到 Spring Cloud Gateway&#xff1a;一步步实现服务网关的升级 迁移前的准备工作迁移步骤详解第一步&#xff1a;查看源码第二步&#xff1a;启动类迁移第三步&#xff1a;引入 Gateway 依赖第四步 编写bootstrap.yaml第五步&#xff1a;替换路由配置第六步&#…...

qt之插件编译

QtXlsxWriter sudo apt install qtbase5-private-dev git clone https://github.com/dbzhang800/QtXlsxWriter.git cd QtXlsxWriter/ qmake make -j6 sudo make install #将生成的lib 及 include copy至项目路径的lib 及include里项目配置&#xff1a; QT xlsxbluetoo…...

pandas一行拆成多行

import pandas as pd df pd.DataFrame({Country:[China,US,Japan,EU,UK/Australia, UK/Netherland],Number:[100, 150, 120, 90, 30, 2],Value: [1, 2, 3, 4, 5, 6],label: list(abcdef)})# 法一 推荐 df2df.drop(Country, axis1).join(df[Country].str.split(/, expandTrue).…...

今天调了个转速的小BUG

同事说转速表有个bug&#xff0c;转速停止后&#xff0c;继电器没有恢复到初始状态。若停止之前是报警&#xff0c;继电器吸合&#xff0c;则停止后继电器还是吸合。我心想不会啊&#xff0c;这软件都弄了好几年了&#xff0c;一直也没出现过状况。 经过与调试同事的沟通&#…...

第三节、电机定速转动【51单片机-TB6600驱动器-步进电机教程】

摘要&#xff1a;本节介绍用定时器定时的方式&#xff0c;精准控制脉冲时间&#xff0c;从而控制步进电机速度 一、计算过程 1.1 电机每一步的角速度等于走这一步所花费的时间&#xff0c;走一步角度等于步距角&#xff0c;走一步的时间等于一个脉冲的时间 w s t e p t … ……...

从一个Bug谈前端响应拦截器的应用

一、问题场景 今天在开发商品管理系统时&#xff0c;遇到了一个有趣的问题&#xff1a;当添加重复的商品编号时&#xff0c;页面同时弹出了两条 "商品编号已存在" 错误提示&#xff1a; 这个问题暴露了前端错误处理机制的混乱&#xff0c;让我们从这个问题出发&…...

JS进阶DAY4|节点操作

嘿&#x1f44b; 今天我们要一起深入探索JavaScript中的DOM操作&#xff0c;这是前端开发中不可或缺的技能。&#x1f31f; 准备好了吗&#xff1f;让我们一起跳进DOM的海洋&#xff0c;看看怎么用代码操控网页的结构吧&#xff01; 目录 1. 增加节点 1.1 使用 appendChild 方…...

【Web】2023安洵杯第六届网络安全挑战赛 WP

目录 Whats my name easy_unserialize signal Swagger docs 赛题链接&#xff1a;GitHub - D0g3-Lab/i-SOON_CTF_2023: 2023 第六届安洵杯 题目环境/源码 Whats my name 第一段正则用于匹配以 include 结尾的字符串&#xff0c;并且在 include 之前&#xff0c;可以有任…...

go 语言中协程和GMP模型

为什么需要协程&#xff1f; 协程用来更加精细地利用线程&#xff0c;支撑超高的并发的。协程&#xff0c;从 runtime 的角度看&#xff0c;协程就是一个被调度的 g 结构体。 G 就是协程&#xff0c;M 是线程&#xff0c;P 是为了优化多线程并发时&#xff0c;会抢夺协程队列的…...

【c++面向对象编程】第3篇:类与对象(二):构造函数与析构函数

目录 一、一个让人头疼的问题 二、构造函数&#xff1a;对象出生时的“第一声啼哭” 1. 最基本的构造函数 2. 带参数的构造函数&#xff08;重载&#xff09; 3. 初始化列表&#xff1a;更高效的初始化方式 三、默认构造函数&#xff1a;那个“看不见”的函数 四、析构函…...

抖音下载器终极指南:3种场景下的高效内容获取方案

抖音下载器终极指南&#xff1a;3种场景下的高效内容获取方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. …...

一键完整网页截图终极指南:告别滚动拼接的烦恼

一键完整网页截图终极指南&#xff1a;告别滚动拼接的烦恼 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-extension …...

Ciao TLS证书监控:如何避免SSL证书过期导致的服务中断

Ciao TLS证书监控&#xff1a;如何避免SSL证书过期导致的服务中断 【免费下载链接】ciao HTTP checks & tests (private & public) monitoring - check the status of your URL 项目地址: https://gitcode.com/gh_mirrors/ci/ciao 在当今数字化时代&#xff0c;…...

手机端数据恢复神器,值得收藏

今天给大家推荐一款好用的安卓端数据恢复工具&#xff0c;非常好用的&#xff0c;还有一款Wifi信号检测工具&#xff0c;有需要的小伙伴及时下载收藏&#xff01; 软件介绍 第一款&#xff1a;数据恢复大师dumpster 提到数据恢复大师&#xff0c;之前好像也有推荐过&#xff0…...

局域网文件传输终极指南:3步实现跨平台文件秒传

局域网文件传输终极指南&#xff1a;3步实现跨平台文件秒传 【免费下载链接】LAN-Share Cross platform LAN File transfer application built with Qt C framework 项目地址: https://gitcode.com/gh_mirrors/la/LAN-Share 还在为电脑间传文件而烦恼吗&#xff1f;U盘太…...

视频怎么去水印?视频去水印软件哪个好用?2026实测方法盘点

视频怎么去水印&#xff1f;视频去水印软件哪个好用&#xff1f;2026实测方法盘点 刷到一条好视频想保存下来&#xff0c;打开相册发现角落里有个大水印&#xff0c;二次使用直接废了。做自媒体的更懂这种痛&#xff1a;从各个平台扒下来的素材&#xff0c;水印各不相同&#x…...

别再让扰动拖后腿!手把手教你用MATLAB/Simulink实现非线性系统的干扰观测器(附完整代码)

非线性系统扰动观测器实战&#xff1a;从理论到MATLAB代码的完整实现指南 在控制工程实践中&#xff0c;非线性系统的干扰抑制一直是工程师面临的棘手挑战。想象一下&#xff0c;你正在调试一台工业机械臂&#xff0c;理论模型完美无缺&#xff0c;但实际运行时总是出现无法解…...

程序员转大模型,这8个必备框架,新手也能快速落地项目

文章目录前言1. LangChain 2026&#xff1a;AI应用开发的"事实标准"&#xff0c;新手入门绕不开1.1 大白话理解LangChain1.2 2026年核心更新亮点1.3 新手快速上手代码示例1.4 避坑指南2. LlamaIndex&#xff1a;RAG专属神器&#xff0c;知识库搭建就靠它2.1 大白话理…...

瓷砖规格有哪些?瓷砖用量如何计算?

瓷砖规格有哪些?瓷砖用量如何计算? 目前建材市场上出现的瓷砖规格有许多种,每一种瓷砖规格所装饰出来的效果都各有千秋,如果想节省瓷砖和降低造价,那么在购买瓷砖前计算要铺贴的使用量就十分必要。了解瓷砖规格以及瓷砖用量,对于购买瓷砖的消费者而言,一定会有所帮助的…...