3.12.13 组件

优质
小牛编辑
125浏览
2023-12-01

组件

所有继承自 Component 的类都称为组件类, 其对象称为组件,实现了 Cocos Creator 3D EC 系统中的组件概念。

组件类必须是 cc 类。

import { Component } from "cc";

@ccclass("MyComponent")
class MyComponent extends Component {

}

组件的创建和销毁

组件的生命周期完全由结点操控。 与普通类对象不同,组件不能由构造函数创建:

const component = new MyComponent(); // 错误:组件无法由构造函数创建

相反地,组件必须由结点来创建:

const myComponent = node.addComponent(MyComponent);

在此之后,称组件附加到了结点上。

调用 Node.removeComponent 方法移除指定的组件并将其销毁。

组件总是附加在某个结点上,除了:

  • 在组件类的构造函数结束之前;
  • 组件从结点上移除之后。
import { Component } from "cc";

@ccclass("MyComponent")
class MyComponent extends Component {
    constructor () {
        console.log(this.node.name); // 错误:组件并未附加到结点上
    }

    public printNodeName () {
        console.log(this.node.name);
    }
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
const myComponent = node.addComponent(MyComponent);
myComponent.printNodeName(); // 正确
node.removeComponent();
myComponent.printNodeName(); // 错误:组件并未附加到结点上