【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.rhkb.cn/news/177291.html

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

相关文章

Python web开发中的单元测试自动化技巧!

Python作为一种广泛使用的编程语言&#xff0c;在web开发中也扮演着重要的角色。在进行web开发时&#xff0c;单元测试是一个不可或缺的环节。单元测试可以确保代码的正确性&#xff0c;并且能够在开发过程中快速发现问题&#xff0c;有助于提高代码质量和开发效率。 在Python…

黑芝麻智能助力亿咖通·天穹Pro行泊一体智能驾驶计算平台正式量产

11月1日&#xff0c;亿咖通科技旗下首款智能驾驶计算平台——亿咖通天穹Pro行泊一体智能驾驶平台已向客户开始正式量产交付。亿咖通天穹行泊一体智能驾驶计算平台是亿咖通科技基于黑芝麻智能华山二号A1000&#xff0c;由双方合作研发并推出的具备行泊一体能力的智能驾驶解决方案…

【MySQL进阶之路丨第十四篇】一文带你精通MySQL重复数据及SQL注入

引言 在上一篇中我们介绍了MySQL ALTER命令及序列使用&#xff1b;在开发中&#xff0c;对MySQL重复数据的处理是十分重要的。这一篇我们使用命令行方式来帮助读者掌握MySQL中重复数据的操作。 上一篇链接&#xff1a;【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令…

Http代理与socks5代理有何区别?如何选择?(二)

上篇文章我们基本分别了解了http代理与socks5代理的定义与优缺点&#xff0c;接下来我们继续来了解http代理与socks5代理之间的比较与区别。 一、两者的比较 1、功能比较 HTTP代理专门用于Web流量&#xff0c;并在处理HTTP和HTTPS协议方面非常高效。它们可以修改正在传输的数据…

网络层协议【IP协议】

全文目录 基本概念IP协议IPv4 协议头格式&#xff1a;分片发送方进行分片&#xff1a;识别IP分片&#xff1a;组装IP分片&#xff1a; 网段划分DHCP技术IP分类 私有IP和共有IP1. 私有IP地址&#xff08;Private IP Address&#xff09;&#xff1a;2. 公网IP地址&#xff08;Pu…

408操作系统笔记

一操作系统概述 1.操作系统的概念 操作系统&#xff1a;是控制和管理整个计算机系统 的硬件和软件资源 &#xff0c;合理地组织&#xff0c;调度计算机的工作和资源的分配&#xff0c;为用户和其他软件提供方便接口和环境的程序集合&#xff0c;是计算机系统中最基本的系统软…

UE5 日记(人物连招:蒙太奇动画通知(含视频链接))

教程https://www.youtube.com/watch?vsWpENaVGj2M&listPLiSlOaRBfgkcPAhYpGps16PT_9f28amXi&index10&ppiAQB 相关蓝图 连招逻辑 动画通知类 逻辑分析 1.用户输入 已搭载战斗系统模块,可以收到输入指令 2.连击 第一次攻击&#xff1a; 第一次攻击&#xff0c;…

windows使用FindWindow函数查找窗口句柄

理解什么是句柄&#xff1f; 对于“句柄”&#xff0c;之前一直停留在一知半解的认识层面&#xff0c;也说不清具体概念&#xff0c;只知道它是一个标识符&#xff0c;用来标记对象或者说某个东西的。只知其名不知其意。目前学习windows编程&#xff0c;对“句柄”做一个完整的…

2.Docker的安装

1.认识Docker的基本架构 下面这张图是docker官网上的&#xff0c;介绍了整个Docker的基础架构&#xff0c;我们根据这张图来学习一下docker的涉及到的一些相关概念。 1.1 Docker的架构组成 Docker架构是由Client(客户端)、Docker Host(服务端)、Registry(远程仓库)组成。 …

图扑 HT for Web 手机端运维管理系统

随着信息技术的快速发展&#xff0c;网络技术的应用涉及到人们生活的方方面面。其中&#xff0c;手机运维管理系统可提供数字化、智能化的方式&#xff0c;帮助企业和组织管理监控企业的 IT 环境&#xff0c;提高运维效率、降低维护成本、增强安全性、提升服务质量&#xff0c;…

我在Vscode学OpenCV 初步接触

OpenCV是一个开源的计算机视觉库&#xff0c;可以处理图像和视频数据。它包含了超过2500个优化过的算法&#xff0c;用于对图像和视频进行处理&#xff0c;包括目标识别、面部识别、运动跟踪、立体视觉等。OpenCV支持多种编程语言&#xff0c;包括C、Python、Java等&#xff0c…

利用两个栈s1,s2模拟一个队列时,如何用栈的运算来实现该队列的运算?写出模拟队列插入和删除的函数。一个栈s1用于插入元素,另一个栈s2用于删除元素

利用两个栈s1&#xff0c;s2模拟一个队列时&#xff0c;如何用栈的运算来实现该队列的运算&#xff1f;写出模拟队列插入和删除的函数。一个栈s1用于插入元素&#xff0c;另一个栈s2用于删除元素。 前置知识点&#xff08;栈定义&#xff0c;及出栈入栈函数&#xff09; #def…

【小白专用】Mysql的安装配置教程(详细)

首先简单概述分为几个步骤&#xff1a; 一、下载Mysql 二、安装Mysql 三、验证Mysql安装是否成功 四、 配置环境变量 五、验证配置环境变量是否成功 一、下载Mysql 要在Windows或Mac上安装MySQL&#xff0c;首先从MySQL官方网站下载最新的MySQL Community Server版本&…

降低毕业论文写作压力的终极指南

亲爱的同学们&#xff0c;时光荏苒&#xff0c;转眼间你们即将踏入毕业生的行列。毕业论文作为本科和研究生阶段的重要任务&#xff0c;不仅是对所学知识的综合运用&#xff0c;更是一次对自己学术能力和专业素养的全面考验。然而&#xff0c;论文写作常常伴随着压力和焦虑&…

如何确认目标期刊被SCI或EI收录?

原创内容&#xff0c;仅供参考&#xff0c;欢迎大家批评指正&#xff01; 目录 通过Web of Science查询SCI期刊1. 登录Web of Science2. 查找目标期刊3. 查看期刊信息 通过Scopus查询EI期刊1. 登录Scopus2. 查找目标期刊3. 查看期刊信息 参考 通过Web of Science查询SCI期刊 1…

Django实战项目-学习任务系统-兑换物品管理

接着上期代码框架&#xff0c;开发第5个功能&#xff0c;兑换物品管理&#xff0c;再增加一个学习兑换物品表&#xff0c;主要用来维护兑换物品&#xff0c;所需积分&#xff0c;物品状态等信息&#xff0c;还有一个积分流水表&#xff0c;完成任务奖励积分&#xff0c;兑换物品…

golang的类型断言

前言&#xff1a;原因很简单&#xff0c;写的代码panic了。报错如下。为此专门看下golang的类型断言。 “[PANIC]interface conversion: interface {} is string, not float64”。 1、类型断言(assertion) 所谓“类型断言”即判断一个变量是不是某个类型的实例(简单来讲就是判…

【前端早早聊直播回顾】Harmony Next 与 Flutter 的不解之缘

Hello 大家好&#xff0c;我是 Flutter GDE 郭树煜&#xff0c;本次要分享的话题是关于鸿蒙与 Flutter 的故事&#xff0c;可能没接触过的会感觉有点懵&#xff0c;Harmony 和 Flutter 有啥关系&#xff0c;它们怎么会被放到一起讲了呢&#xff1f;接下来就让我们来聊聊这个问题…

世界电信日 | 人大金仓助力中国移动租赁核算系统升级上线

世界电信日 5月17日恰逢第五十四个世界电信日&#xff0c;运营商作为新型基础设施建设以及维护网信安全的主力军&#xff0c;掌握关键核心技术&#xff0c;实现科技自立自强刻不容缓。 作为数据库领域国家队&#xff0c;人大金仓坚持原始创新&#xff0c;低难度、低成本、低风…

第二证券:怎么判断股票浮筹多少?

股票的浮筹是指公司的股份中&#xff0c;揭露生意在市场上的股份&#xff0c;一般是指除了大股东和筹码安稳的组织等&#xff0c;其他组织和个人能够自在生意的股份。在出资股票时&#xff0c;了解公司的浮筹是非常重要的&#xff0c;由于它直接联络到股票的供需联络和股价动摇…