【Cocos新手进阶】使用cocos 的预制体创建动态的滚动框组件。

本篇文章主要讲解,使用cocos 游戏引擎制作动态生成的滚动框实例教程。
日期:2023年11月1日
作者:任聪聪
引擎版本:2.4.3 至 2.4.11

关于预制体的说明和概念

cocos中的预制体的作用是能够让你使用数据的形式进行控制界面的变化,同时可以对界面中的相关动态元素进行绑定,在界面中显示相对应的动态变化。

在开发的过程中,可以将单个做好的组件变为预制体,这可以在未来的开发和修改过程中让自己更为事半功倍的进行二次的开发和修改工作,避免一个个界面和场景进行修改。只需要在其他场景中引用预制体即可。

实际效果:

效果说明:不需要手动进行创建,cocos引擎自动加载数据创建一个动态的界面。
在这里插入图片描述

一、打开我们的cocos dashboard 创建一个空项目命名为 preFabDemo

步骤一、打开后进入到如下界面,找到顶部的新建项目如下图。

在这里插入图片描述

步骤二、点击新建项目后,进入如下界面。

在这里插入图片描述
提示说明:选择指定的版本并在左下方项目名称处,修改项目名称为“preFabDemo ” 点击创建并打开。

二、构建一个页面并创建相对应的脚本及预制体的声明

步骤一、找到资源管理器,右键assets,选择scene,如下图。

在这里插入图片描述

步骤二、将页面名命名为home,如下图。

在这里插入图片描述

步骤三、创建一个home同名的ts脚本如下图:

在这里插入图片描述
说明:方法一致都是点击assets右键菜单中选择。

步骤四、双击打开home的ts脚本,修改脚本类名如下图

在这里插入图片描述
修改为 home 。
在这里插入图片描述
提示:创建完其他的脚本也需要进行修改不然会报错喔。

步骤五、构建home界面的相关功能组件。

组件一、动态显示item信息的滚动框

操作说明:在home界面中创建一个滚动框组件如下图,拖拽到画布中即可。
在这里插入图片描述

组件二、修改content中的lable为:item_label_obj

在这里插入图片描述
修改后:
在这里插入图片描述

步骤六、创建item_label_obj 的ts脚本 如下:

在这里插入图片描述

步骤七、点击home 的页面文件,回到home 的界面中,对界面的滚动框和item进行自适应的调整

详细操作教程见:【Cocos新手入门】 cocos creator 制作 scrollview 实现子节点自适应增加content高度的方法

步骤八、给 item_label_obj 组件添加上脚本关联,如下图:

在这里插入图片描述
然后,将组件进行关联label:
在这里插入图片描述
构建 item_label_obj.ts的代码如下:

const {ccclass, property} = cc._decorator;@ccclass
export default class item_label_obj extends cc.Component {@property(cc.Label)label: cc.Label = null;/*** onLoad */protected onLoad(): void {}/*** 初始化* @param data */public createdPre(data: { title: string }) {console.log(data);this.label.string = "我是第:"+data.title+"个,预制体。";//给label 注册事件监听this.node.on(cc.Node.EventType.TOUCH_END, this.click_info_log, this);}/*** 事件监听*/protected click_info_log() {console.log(`成功点击:[${this.label.string}]`);}
}

步骤九、选中做好的 item_label_obj ,并拖拽到底部,将其编程预制体。

在这里插入图片描述
完成效果说明:
在这里插入图片描述

步骤十、在home脚本中创建和声明预制体、预制体的父级节点,及引入预制体脚本和生成预制体的代码。


import item_label_obj from "./item_label_obj";const {ccclass, property} = cc._decorator;@ccclass
export default class home extends cc.Component {@property({type: cc.Prefab,displayName: "预制体对象"})protected preItemObj: cc.Prefab = null;@property({type: cc.Node,displayName: "预制体父节点"})protected preItemObjParent: cc.Node = null;protected preData: Array<{ title: string}> = [];protected onLoad(): void {let temporaryData = null;let num = 0;//循环生成60个预制组件数据for (let i = 0; i < 60; i++) {temporaryData = {title: ""};temporaryData.title = `${++num}`;this.preData.push(temporaryData);}//根据数组情况批量创建预制体let length = this.preData.length;for (let i = 0; i < length; i++) {let prefabricatedObject = cc.instantiate(this.preItemObj);prefabricatedObject.parent = this.preItemObjParent;//初始化预制体对象并执行prefabricatedObject.getComponent(item_label_obj).createdPre(this.preData[i]);}}
}

完成后回到cocos dashboard 中,将组件的层级进行拖拽管理,具体事宜如下。
在这里插入图片描述

步骤十二、点击canvas 创建用户组件,关联脚本。

在这里插入图片描述
而后,将预制体对象进行关联,如下图:
在这里插入图片描述
而后再将父节点进行关联,如下图:
在这里插入图片描述

三、运行代码并优化item的样式

运行后,发现效果很差,如下图:
在这里插入图片描述
这是要由于没有做样式或者样式不对导致的,解决办法如下:
在这里插入图片描述
将content中的配置,按红框中的layout进行配置即可自适应增加高度。

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

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

相关文章

ubuntu配置 Conda 更改默认环境路径

我的需求是以后凡是新建一个虚拟环境都需要安装在一个挂载了大容量的分区/data里面 /home里面的是即将爆满但是还能塞点东西的硬盘. 如果您想要永久更改 Conda 的默认环境路径&#xff0c;可以编辑 Conda 的配置文件。首先&#xff0c;找到 Conda 的配置文件通常是 .condarc 文…

3201. 任务调度

有若干个任务需要在一台机器上运行。 它们之间没有依赖关系&#xff0c;因此可以被按照任意顺序执行。 该机器有两个 CPU 和一个 GPU。 对于每个任务&#xff0c;你可以为它分配不同的硬件资源: 在单个 CPU 上运行。在两个 CPU 上同时运行。在单个 CPU 和 GPU 上同时运行。在两…

LCD驱动程序——Framebuffer应用编程

1.LCD 操作原理 在 Linux 系统中通过 Framebuffer 驱动程序来控制 LCD。Frame 是帧的意思&#xff0c;buffer 是缓冲的意思&#xff0c;这意味着 Framebuffer 就是一块内存&#xff0c;里面保存着一帧图像。Framebuffer 中保存着一帧图像的每一个像素颜色值&#xff0c;假设 L…

Vue显示FFmpeg推的流

零、环境安装 小弟的另一篇文章&#xff1a; FFmpeg和rtsp服务器搭建视频直播流服务-CSDN博客 一、FFmpeg推流 1、拉取rtsp摄像头流 sudo ffmpeg -f v4l2 -input_format mjpeg -i /dev/video0 -c:v copy -f rtsp rtsp://10.168.3.196:8554/mystream2、推视频的rtmp流 sudo ffm…

智安网络|保护您的应用程序免受攻击:重要的安全强化措施

在今天的数字化时代&#xff0c;应用程序安全成为了企业和个人必须重视的重要领域。应用程序普遍存在的安全漏洞成为黑客们进行攻击的一个突破口。为了保护敏感数据和个人隐私&#xff0c;我们必须了解并实施一系列的关键措施来加固应用程序的安全性。 首先&#xff0c;一个关…

Distribution-Aware Coordinate Representation for Human Pose Estimation阅读笔记

主要研究人体姿态估计中heatmap转坐标的方法&#xff0c;提出一种新的解码方法 &#xff08;其实这人体姿态我毛也不会&#xff0c;过来看看这个heatmap解码方法&#xff09; 代码&#xff1a;https://github.com/ilovepose/DarkPose/blob/master/lib/core/inference.py 方法…

Word 将文档中的【第几条】批量加粗

目录预览 一、问题描述二、解决方案三、参考链接 一、问题描述 我要制作一份文档&#xff0c;关于法律条文的&#xff0c;然后需要将条文中的【第几条】字样进行加粗表示&#xff0c;格式刷是不可能格式刷的&#xff0c;这明显不适合此种批量的操作&#xff0c;浪费事件。所以…

NEFU离散数学实验特别篇1-树和图

树相关概念 离散数学中&#xff0c;树是一种重要的数据结构&#xff0c;它是一种无向连通图&#xff0c;并且不存在环。下面是树的相关概念和公式&#xff1a; 1. 顶点数为n的树&#xff0c;边数为n-1。 2. 度数为k的树中有k个分支。 3. 一棵树中最多只有两个度数大于1的顶点&a…

2021-arxiv-LoRA Low-Rank Adaptation of Large Language Models

2021-arxiv-LoRA Low-Rank Adaptation of Large Language Models Paper: https://arxiv.org/abs/2106.09685 Code: https://github.com/microsoft/LoRA 大型语言模型的LoRA低秩自适应 自然语言处理的一个重要范式包括对通用领域数据的大规模预训练和对特定任务或领域的适应。…

NB-IOT的粮库挡粮门异动监测装置

一种基于NBIOT的粮库挡粮门异动监测装置,包括若干个NBIOT开门监测装置,物联网后台管理系统,NBIOT低功耗广域网络和用户访问终端;各个NBIOT开门监测装置通过NBIOT低功耗广域网络与物联网后台管理系统连接,物联网后台管理系统与用户访问终端连接.NBIOT开门监测装置能够对粮库挡粮…

删除链表的倒数第n个节点(C++解法)

题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 3&#…

[0xGame 2023 公开赛道] week4 crypto/pwn/rev

最后一周结束了&#xff0c;难度也很大&#xff0c;已经超出我这认为的新生程度了。 crypto Orac1e 先看题&#xff0c;题目先是给了加密过的flag然后提供不限次数的解密&#xff0c;不过仅提供解密后unpad的结果。 from Crypto.Util.number import * from Crypto.Cipher i…