【Cocos新手进阶】父级预制体中的数据列表,在子预制体中的控制方法!

本篇文章主要讲解,cocos中在预制体操作过程中,父级预制体生成的数据列表中,绑定了子预制体中的事件,在子预制体的时间中如何控制上级列表的具体操作教程。
日期:2023年11月10日
作者:任聪聪

一、实际效果情况

在这里插入图片描述

说明:预制体弹出框中的预制体item,给予item预制体的文本绑定点击事件,点击后即可传递数据到父级home脚本中进行更新。

二、制作父级预制体及子预制体

步骤一、创建空节点,如下图

在这里插入图片描述

步骤二、创建名为“popup_list” 的节点及背景图如下图。

在这里插入图片描述
注意:点击修改所有的信息如图红框内所示。

步骤三、创建滚动窗

在这里插入图片描述
创建后,名称改为ScrollView:
在这里插入图片描述

步骤四、将item设置为预制体

注意:记得解锁左侧的红色小锁,点击一下就可以。
在这里插入图片描述
设置完毕:
在这里插入图片描述
创建对应的预制体脚本,如下图,item.ts:
在这里插入图片描述

步骤五、创建home场景,及home脚本并将上述的弹出界面存到里面

在这里插入图片描述
说明:点击保存即可进行配置,优先创建空的home,然后保存到home的fire界面。

创建home脚本,并声明预制体及父节点信息,如下内容:
home.ts

import item from "./prefab/item";const {ccclass, property} = cc._decorator;@ccclass
export default class home extends cc.Component {@property({type: cc.Node,displayName: "预制体父节点"})protected prefabFatherNode: cc.Node = null;@property({type: cc.Prefab,displayName: "item预制体"})protected itemPrefab: cc.Prefab = null;protected preData: Array<{ title: string,id:number,bg_color:string}> = [];onLoad() {this.node.on('up_list', this.onListUpdate, this);this.echoList();}//监听更新protected onListUpdate(data: any): void {console.log('父节点回收到的数据:', data.detail);this.echoList(data.detail.id);}//输出列表echoList(theId=0){let that = this;let temporaryData = null;let num = 0;for (let i = 0; i < 60; i++) {temporaryData = {title: "",id: 0,bg_color: "#000000",};const id = ++num;temporaryData.title = `${id}`;temporaryData.id = id;that.preData.push(temporaryData);}console.log(that.preData);if (theId !== 0) {// 更新预制体let prefabChildren = that.prefabFatherNode.children;for (let i = 0; i < prefabChildren.length; i++) {let prefabChild = prefabChildren[i];let itemComponent = prefabChild.getComponent(item);//that.preData 会记录上一次的修改,所以要进行颜色的还原that.preData[i].bg_color = "#000000";if (itemComponent && itemComponent.getData().id === theId) {that.preData[i].bg_color = "#C0331F";}itemComponent.updatePre(that.preData[i]);}} else {// 创建新的预制体let length = that.preData.length;for (let i = 0; i < length; i++) {let prefabricatedObject = cc.instantiate(that.itemPrefab);prefabricatedObject.parent = that.prefabFatherNode;prefabricatedObject.getComponent(item).createdPre(that.preData[i]);}}}// update (dt) {}
}

配置content属性:

在这里插入图片描述
给home.ts绑定脚本:
在这里插入图片描述
拖拽关联预制体和父节点:
在这里插入图片描述

步骤六、创建预制体并绑定脚本

点击打开预制体:
在这里插入图片描述
点选预制体场景信息后,在左侧进行用户脚本的关联如下图:
在这里插入图片描述
说明:选择item。

配置item.ts的脚本内容:

const {ccclass, property} = cc._decorator;@ccclass
export default class item extends cc.Component {@property(cc.Label)label: cc.Label = null;private data: any = null; // 保存预制体的数据//点击事件监听 回调到home脚本protected onClick(theId): void {console.log("点击测试");let newData = {'id':theId}; let customEvent = new cc.Event.EventCustom('up_list', true);customEvent.detail = newData;//自定义的数据调用处this.node.dispatchEvent(customEvent);//亲测有效的方式,使用this.node.parent.emit("xxxx",{[]});没有反应}/*** 初始化* @param data */createdPre(data: { title: string,id:number,bg_color:string }) {let that = this;that.data =data;console.log(data);that.label.string = "我是第:"+data.title+"个,预制体。";that.label.node.color = new cc.Color().fromHEX(data.bg_color);//给label 注册事件监听that.node.on(cc.Node.EventType.TOUCH_END,function(){const theId = data.id;//获取当前的id并返回,用于更新数据that.onClick(theId);})}//更新预制体updatePre(data: any) {this.data = data;this.label.string =  "我是第:"+data.title+"个,预制体。";this.label.node.color = new cc.Color().fromHEX(data.bg_color);}//返回当前预制体的数据getData(): any {return this.data;}}

关联对象信息,拖拽到指定的框即可:
在这里插入图片描述
end:大功告成,运行进行测试。

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

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

相关文章

k8s-Pod控制器

一、Pod控制器 1.Pod控制器及其功用 Pod控制器&#xff0c;又称之为工作负载&#xff08;workload&#xff09;&#xff0c;是用于实现管理pod的中间层&#xff0c;确保pod资源符合预期的状态&#xff0c;pod的资源出现故障时&#xff0c;会尝试进行重启&#xff0c;当根据重启…

企业安全—三保一评

0x00 前言 本篇主要是讲解三保一评的基础知识&#xff0c;以及对为什么要进行这些内容的原因进行总结。 0x01 整体 1.概述 三保分别是&#xff0c;分保&#xff0c;等保&#xff0c;关保。 分保就是指涉密信息系统的建设使用单位根据分级保护管理办法和有关标准&#xff0c…

植物补光灯,哪种效果好?

室内种植物有诸多好处&#xff1a;空间装饰、吸收有害物质、释放氧气&#xff0c;使室内空气更加清新&#xff1b;植物的蒸腾作用可以增加室内的湿度&#xff0c;改善秋冬季干燥的室内环境&#xff0c;可谓是天然的加湿器。 然而由于缺乏太阳光&#xff0c;在室内养植并不是一…

服装展示服务预约小程序的内容如何

互联网电商深入&#xff0c;很多服装商家开始线上卖货经营、会员管理及私域营销等&#xff0c;这也是当今商家们的一个优选项&#xff0c;当然除了直接卖货以外&#xff0c;展示和预约、客户交互也同样是不少商家需要的。 那么商家通过服装展示预约小程序能够实现什么效果呢&a…

被腾讯云感动哭了,5年内都不用再买服务器了!

我一直在寻找一个稳定、高效、可靠的云服务器提供商&#xff0c;以支持我的个人网站和业务。最近&#xff0c;我发现了腾讯云&#xff0c;它提供了一款非常优惠的2核4G云服务器&#xff0c;而且可以用超低的价格一次性购买5年的服务期限&#xff01;看到这么贴心的腾讯云&#…

小程序订单中心path设置本次审核不通过,审核原因:小程序尚未发布,无法审核。

小程序尚未发布&#xff0c;无法审核。 先按照这篇文章把小程序审核通过&#xff0c;小程序版本审核未通过&#xff0c;需在开发者后台「版本管理—提交审核——小程序订单中心path」设置订单中心页path&#xff0c;请设置后再提交代码审核 小程序审核通过后&#xff0c;发布…

React进阶之路(三)-- Hooks

文章目录 Hooks概念理解什么是HooksHooks解决了什么问题 useState基础使用状态的读取和修改组件的更新过程使用规则回调函数作为参数 useEffect什么是函数副作用基础使用依赖项控制执行时机清理副作用发送网络请求 useRefUseContext Hooks概念理解 什么是Hooks Hooks的本质&am…

力扣每日一道系列 --- LeetCode 88. 合并两个有序数组

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构探索 ✅LeetCode每日一道 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 思路1&#xff1a;暴力求解思路2&#xff1a;原地合并 LeetCode 88. 合并两个有序数组…

修改Android Studio默认的gradle目录

今天看了一下&#xff0c;gradle在C盘占用了40多G。我C盘是做GHOST的&#xff0c;放在这里不方便。所以就要修改。 新建目录名&#xff08;似乎无必要&#xff09; ANDROID_SDK_HOMEG:\SOFTWARES\android-sdk GRADLE_USER_HOMEG:\SOFTWARES\.gradle 修改目录 File->Setti…

C# 异步日志记录类,方便下次使用,不用重复造轮子

先定义接口类&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 异常 {internal interface ILog{Task WriteErrorLog(string message);Task WriteInfoLog(string message);Task W…

Git 安全警告修复手册:解决 `fatal: detected dubious ownership in repository at ` 问题 ️

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

2.HTML中常用浏览器

2.常用浏览器 2.1 什么是浏览器 浏览器是网页显示&#xff0c;运行的平台。常用的浏览器有IE&#xff0c;火狐&#xff0c;谷歌&#xff0c;Safari和Opera等 平时成为五大浏览器 2.2 浏览器内核 浏览器内核&#xff08;渲染引擎&#xff09;&#xff1a;负责读取网页内容&…

Java算法(五):手写数组逆置API方法,实现数组逆置。 while实现 for循环实现

Java算法&#xff08;五&#xff09; while 循环实现 需求&#xff1a; 已知一个数组&#xff0c;arr {11, 22, 33, 44, 55};使用程序实现把数组中的元素交换位置。 交换后的数组为 arr {55, 44, 33, 22, 11}; 并在控制台输出交换后的数组元素。 代码示例 package com.…

【Proteus仿真】【Arduino单片机】数码管显示

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用TM1637、共阳数码管等。 主要功能&#xff1a; 系统运行后&#xff0c;数码管显示数字、字符。 二、软件设计 /* 作者&#xff1a;嗨小易&am…

Spring Cloud Config、Apollo、Nacos和Archaius对比

一、适应场景 Spring Cloud Config、Apollo、Nacos、Archaius这四个配置中心在功能和使用场景上有所差异。 1.Spring Cloud Config Spring Cloud Config是Spring Cloud官方提供的分布式系统的外部配置中心。它提供了服务器和客户端支持&#xff0c;可以集中管理不同环境、不同集…

AI时代如何提升自己晋升力

要在AI时代提升职场晋升力&#xff0c;采取以下详细策略&#xff1a; 终身学习的实践&#xff1a; 专业课程&#xff1a; 定期参加在线课程或研讨会&#xff0c;如Coursera、edX等&#xff0c;学习最新的AI技术和行业动态。行业资讯&#xff1a; 订阅相关的行业杂志、博客&…

基于SSM的学院就业信息网设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

奇异矩阵、非奇异矩阵

对于一个方阵A&#xff1a; 如果A的行列式等于0&#xff0c;称矩阵A为奇异矩阵如果A的行列式不等于0&#xff0c;称A 非奇异矩阵 也就是说&#xff0c;对于方阵A&#xff0c;如果它是满秩的&#xff0c;即它的秩等于矩阵的阶数&#xff0c;就是非奇异矩阵&#xff1b;如果秩小…

​怎么测试websocket接口

在部分业务中&#xff0c;我们需要使用长连接&#xff0c;我们可以使用http长连接或者websocket&#xff0c;开发结束后难免会遇到测试问题&#xff0c;这里推荐2个&#xff0c;一个是postman&#xff0c;一个是网站 postman 测试网站 测这边推荐测试网站&#xff0c;支持ws/w…

【123. 买卖股票的最佳时机 III】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:const int Init-0x3f3f3f3f;int maxProfit(vector<int>& prices) {int nprices.size();vector<vector<int>> f(n,vector<int>(3,Ini…