没有官方方法可以给节点添加一些自定义的附带数据么

例如通过 aNode.setData( 'datakeyName', { xxx } ) 给该节点附带自定义数据,

再通过 aNode.getData('datakeyName') 获得该节点的附带数据。

这块 Phaser 是有的,会很方便记录一些节点数据信息。

这是ts也可以直接aNode: any,aNode.metaData = {},或者直接aNode[“metaData”] = {},我也写了个BaseComponent里onLoad就this.metaData = {},一切继承Component的去继承BaseCompoennt :laughing:

那为什么不能更规范一点 给它挂个脚本上去呢

你可以试试ts的联合类型TS联合类型

我知道的,就是麻烦,要是有官方方法支持会方便和规范很多

官方直接支持的话直接调用节点方法就行了,而不是自己搞脚本挂上去。
而且官方如果有方法才是最规范的,避免每人各自一套实现。

一点都不规范,你这样做的话,谁都不知道谁又偷偷存了啥,这种操作属于纯给项目挖坑

按你这么说,H5 的 dataset 也是个不规范的 API 了。

用attr加呗

现在你也能加啊 node[“datakeyName”] = {}就行

declare module “cc” {

interface Node {

    dataKeyName: { attr0: string }

}

}

都是脚本语言了 还不是想怎么干 就怎么干

官方:你自己搞,我可没空

不是 不懂就问 怎么就解决方案了

今天看到这个

attr

属性配置函数。在 attrs 的所有属性将被设置为节点属性。

示例
var attrs = { mykey: 0, mynum: 100 };
node.attr(attrs);

下面这样的添加 编辑器 不会爆红

const nodeAttrs = new WeakMap<cc.Node, { mykey?: number; mynum?: number }>();

nodeAttrs.set(this.sprite_splash2, { mykey: 0, mynum: 100 });

const attrs = nodeAttrs.get(this.sprite_splash2);
if (attrs) {
    console.log(attrs.mykey);
    console.log(attrs.mynum);
}

https://docs.cocos.com/creator/2.4/api/zh/classes/Node.html#attr

好言相劝,你如果开发H5是用dataset存储数据,也是够奇葩的