想了解一下getComponent的性能消耗大吗?

用的语言是TS,当前要快速知道这个物体是一个什么类型的东西,目前有两种方案。
一、用node.getComponent(script) 这样去获取到节点中的脚本,然后判断脚本上的属性。
二、直接在node中添加一个tag属性,然后直接判断node.tag

需要频繁这样去操作,想请教一下哪一种的性能消耗会比较少?

我是更加倾向第二种,不过node本身就很大了,再往里面添东西会不会消耗更大 得不偿失

或者有没有老哥有别的更好的方法? 可能我的方法比较野鸡

就用第二种,或者将js对象添加到node上,
比如: onLoad(){
this.node.xxJS = this;
}

1赞

第二种

1赞

如果只找一个属性肯定tag快了,缺点就是只能找一个属性,然后是可读性不好。
node.getComponent(script).tag 也还好,可读性更好,更灵活
看你自己需要了

下面是getComponent代码,看起来node.getComponent传参直接传类,不是字符串会更快,因为省掉了js.getClassByName这一步

getComponent (typeOrClassName) {
    var constructor = getConstructor(typeOrClassName);
    if (constructor) {
        return findComponent(this, constructor);
    }
    return null;
}

function getConstructor(typeOrClassName) {
if (!typeOrClassName) {
cc.errorID(3804);
return null;
}

if (typeof typeOrClassName === 'string') {
    return js.getClassByName(typeOrClassName);
}

return typeOrClassName;

}

js.getClassByName = function (classname) {
    return _nameToClass[classname];
};
2赞