cocosCreator 之 组件脚本
创始人
2025-05-28 17:15:17

cocosCreator版本: v3.7.1

脚本: typeScript


简介

在cocosCreator中,脚本多作为组件挂载在不同的节点上,它继承于Component, 一般被称为组件脚本。

创建脚本后,编译器会根据脚本的文件名生成对应的className文件。

import { _decorator, Component, Node } from 'cc';
const { ccclass, property } = _decorator;@ccclass('mainScene')
export class mainScene extends Component {start () {// }
}

cc

引擎的API都存在模块cc中,它是历史原因而保留下来的标识符。其行为相当于定义的cc的对象。因此不可将cc作为全局对象使用。参考


ccclass

它主要用于将脚本作为组件添加到节点上,其类名是不可重复的。

在引擎中被称为装饰器,用于修饰Componet的子类,表示为组件脚本。

其他常用的还有:

@ccclass('Example')
// 允许当前组件在编译模式下运行,默认为false 
@executeInEditMode(true)
// 制定当前组件的依赖组件,默认为null, 如果依赖组件不存在,引擎自动降依赖组件添加到节点中,避免脚本报错
@requireComponent(Sprite)
// 用来指定脚本生命周期回调的执行优先级。小于 0 的脚本将优先执行,大于 0 的脚本将最后执行
@executionOrder(3)
// 同一节点上只允许添加一个同类型(含子类)的组件,防止逻辑发生冲突,默认值为 false
@disallowMultiple(true)
// 用来将当前组件添加到组件菜单中,方便用户查找
@menu('foo/bar')
// 指定当前组件的帮助文档的 URL。设置完成后,属性检查器就会显示一个帮助图标,点击即可打开指定的网页。
@help('https://docs.cocos.com/creator/3.4/manual/zh/scripting/decorator.html')

内容可参考:装饰器的使用


Component

所有组件的基类,在脚本中使用this表示本组件,脚本中获取组件所在节点的对象,可以这样:

export class mainScene extends Component {start () {let node = this.node;node.active = false;			// 设置节点atvie为false}
}

property

被称为属性装饰器,可以用来控制编译器对属性的序列化,以及属性检查器对属性的显示。比如:

@ccclass('mainScene')
export class mainScene extends Component {@property({type: Button, tooltip: "这是一个按钮"})public backBtn: Button = null!;	  //等价 backBtn: Button | null = null;
}

请添加图片描述

其常用写法有:

// 可以用来修饰CCInteger, CCFloat, CCBoolean, CCString等基础属性类型
@property({type: CCInteger})
num = 0;// 属性参数只有type时,可以忽略;等价@property({type: CCInteger})
@property(CCInteger)
num = 0;// 修饰Node数组相关
@property({type: [Node]})
children: Node[] = [];// 
@property(Node) 
targetNode: Node | null = null; // 等价于 targetNode: Node = null!;// 属性参数不可带有'_', 否则只会序列化,不会在属性面板显示
@property(Label)
_title = null;

其属性参数可参考:属性参数


生命周期

CocosCreator为组件脚本提供了生命周期的回调函数,从左到右执行顺序:

onLoadonEnablestartupdatelateUpdateonDisableonDestory

onLoad :组件脚本的初始化阶段,会在场景被载入或节点被激活的情况下,会被调用。

onEnable :组件的enable属性或者节点的active属性由false变为true时,会被调用。

start :通常用于初始化一些中间状态的数据,这些数据可能在update之间会发生改变,并且被频繁的enable和disable。

update :主要用于每一帧渲染钱更新物体的行为,状态和方位。

lateUpdate :主要用于组件在执行update之后执行的其他操作。

onDisable : 组件的enable属性或者节点的active属性由true变为false时,会被调用。

onDestory : 组件或节点调用了destroy(),则被调用,并在当前帧结束时统一回收组件。

import { _decorator, Component, Button} from 'cc';
const { ccclass, property } = _decorator;@ccclass('mainScene')
export class mainScene extends Component {@property({type: Button, tooltip: "这是一个按钮"})public backBtn: Button = null!;onLoad() {console.log("------------ onLoad");}onEnable() {console.log("------------ onEnable");}start () {console.log("------------ start");}update() {console.log("------------ update");}lateUpdate() {console.log("------------ lateUpdate");}onDisable() {console.log("------------ onDisable");}onDestroy() {console.log("------------ onDestroy");}
}

参考:生命周期回调


相关内容

热门资讯

[linux] Linux中环... 学校的服务器信息如下命令可以查询: cat /etc/redhat-release ...
计算机底层:奇偶校验码 计算机底层:奇偶校验码校验码的作用:在数据传输或存储时,可...
JavaWeb——urlPat... 1.一个Servlet配置多个访问路径  在WebServlet的配置里面urlPattern的类型...
指针 指针数组 数组指针 二级... 一、本文研究: 指针数组 与 二级指针 数组 与 数组指针 上面的两两一对࿰...
Ubuntu20 + KVM虚... 1 命令汇总 # 查看一下linux是32位还是64位:file /bin/ls # ...
Spring Boot 整合 ... Spring Boot 整合 RabbitMQ 多种消息模式 准备工作集成 RabbitMQ发布/订...
【BEV】TPVFormer复... 1. 前言 在环视图像的网络中,常使用鸟瞰图来进行特征提取,尽管比体素表...
华测RTK参数/华测GPS/华... 1.i93 视觉RTK华测导航i93视觉RTK是集成了华测目前新型视觉技术的一款革新型视觉RTK产品...
西瓜视频登录页面 题目 代码 登录页面td{width: 160px;height: ...
Android kotlin ... 文章目录 一、什么是SharedPreferences1、将数据存储到SharedPreferenc...
算法训练营day53_动态规划... 算法训练营day53_动态规划(3.17提前写) 1143.最长公共子序...
案例23-服务出现频繁掉线情况 目录 一、背景介绍 二、分析原因 1.nacos中data文件的作用 2. data路径下prot...
【文心一言】什么是文心一言,如... 文心一言什么是文心一言怎么获得内测资格接下来就给大家展示一下文学创作商业文案创作数理逻辑推算中文理解...
第31篇:Java流和文件操作... 目录 1、读取控制台输入流 1.1 从控制台读取多字符输入流 1.2 从控制台读取字符串流 2、读写...
Linux/Debian/Ub... 文章目录前言相关资源下载OpenCVCUDA下载CUDNN下载编译错误异常 前言 本文用来记录在l...
虚拟数字人和GPT-4的结合,... 最近,ChatGPT一直在互联网上狂飙,从 去年11月底推出到月活过亿&...
第三章 Liunx的常用命令 文章目录一、Liunx常用命令查看内存 free -m回到根目录 直接 cd 回车回到上一级目录 c...
素人做课会踩的3大坑,你中了几... 素人做课会踩的3大坑,你中了几个?大坑:盲目模仿别人做课的...
element输入框el-in... element输入框el-input之格式控制 (1)限制输入的长度&#...
oracle19c迁移手册 windows10- 查看当前用户所有的表:select table_name fro...
docker-compose搭... # 关闭防火墙 systemctl stop firewalld.service # 永久关闭防火墙...
【2023最新Activiti... 1.流程实例 1.1 什么是流程实例 流程实例(ProcessInstance)代表流程定义的执行实...
基于ggdensity包的等高... 简介 科研过程中,需要绘制某个后验密度/其他的形状。在发表论文中常常使用等高线来满足该...
Leetcode 105. 从... 题目: 给定两个整数数组 preorder 和 inorder ,其中 ...
点亮LED 目录 一、LED 硬件控制方式 二、LED 应用程序 1、定义宏 2、main函数 ①、打开文件  ...
随想008:烂摊子 我看到过很多离谱的现象。比如: 程序 代码重复、命名随意、逻辑混乱、甚至对齐都不一致&...
2023长沙到广州的火车时刻表... 今天给各位分享2023长沙到广州的火车时刻表,从长沙到广州高铁最新...的知识,其中也会对长沙到广州...
车载DVD一体机导航升级教程(... 本篇文章极速百科给大家谈谈车载DVD一体机导航升级教程(凯立德)(超详细),以及汽车凯立德导航用u盘...
圈内sp是什么意思(sp圈里是... 今天给各位分享圈内sp是什么意思的知识,其中也会对sp圈里是什么样的进行解释,如果能碰巧解决你现在面...
鸡蛋撞地球(鸡蛋撞地球怎么制作... 本篇文章极速百科给大家谈谈鸡蛋撞地球,以及鸡蛋撞地球怎么制作对应的知识点,希望对各位有所帮助,不要忘...