如何友好的给Node节点添加属性,给预制体添加属性,【以及给开发者的建议】

  • Creator 版本: cocos creator 3.6.1
    今天在写代码的时候想给Node节点添加2个字段属性,系统给的提示是在cc.d.ts里面添加2个字段,但是我觉得这个太不友好了,会导致其他地方的脚本也可以获取到这2个属性。在看了其他论坛和方法后我总结得出了以下可以实现的方法,还有希望出现的方法

1.添加新脚本 aa.d.ts ,为Node节点添加多余属性,全局通用【可行】

image

2.定义一个class类继承Node类,然后强制类型转换 【可行】

export class BlockNode extends Node {
    baseIndex: number;
    blockIndex: number;
}

@ccclass('game')
export class game extends Component {
    @property(Prefab)
    blockPrefab: Prefab 
    initBlock(num) {       
            let blockNode: Node = instantiate(this.blockPrefab);           
            let BlockNodeNew : BlockNode = blockNode as BlockNode
            BlockNodeNew.baseIndex = 0;
            BlockNodeNew.blockIndex = 此本文本将被隐藏num;          
    }

3.直接给对象添加一个属性值,无需添加多余代码,【局部有效】

this.node["aaa"] = 2;
this.node["bbb"] = 2;
let aaa_value = this.node["aaa"];
let bbb_value = this.node["bbb"]; 

4.希望可以直接在定义属性的时候添加多余的字段属性【不知道有没有这种功能】

@ccclass('game')
export class game extends Component {
    //如果可以在定义属性的时候再给对象添加多余的属性就太好了
    @property(Prefab)
    blockPrefab: Prefab { baseIndex : number; blockIndex : number}

    initBlock(num) {       
            let blockNode: Node = instantiate(this.blockPrefab);           
            let BlockNodeNew : BlockNode = blockNode as BlockNode
            BlockNodeNew.baseIndex = 0;
            BlockNodeNew.blockIndex = 此本文本将被隐藏num;          
    }

请问这种需求常见吗?为什么不把这些所谓的新增多余的属性字段放在新的组件里?
Node+ComponentA+ComponentB+…不是编辑器鼓励的代码组织方式吗?

1赞

image

这种形式智能跳转不友好,但是任意地方添加字段将不再报错

1赞

直接用this.node[“aaa”] = 1
this.node[“bbb”] = 2
简单快捷。毕竟用的少

1赞

对,但是这种要看全局是否都需要,多出的字段看着不舒服哈哈哈

这种也可以,谢谢