###如题,水一帖,chrome打印当前creator场景所有节点名称及节点所带组件信息,不喜轻喷
###这是我测试的打印结果:
这是根据ts代码转出来的js,用chrome打开creator游戏后,调出控制台,然后把这段代码复制进入运行就能看到效果了,ts文件在下面
var scene = cc.director.getScene();
var nodeList = new Array();
var total = 0;
var startTime = new Date().valueOf();
var searchNode = function (node) {
nodeList.push(node);
total++;
for (var i = 0; i < node.childrenCount; i++) {
searchNode(node.children[i]);
}
};
var startSearchNode = function () {
total = 0;
startTime = new Date().valueOf();
nodeList = new Array();
searchNode(scene);
console.log("searchNode total:" + total + " time:" + (new Date().valueOf() - startTime));
};
var nodeComponentMsglist = [];
var getComponentList = function () {
nodeComponentMsglist = [];
nodeList.forEach(function (node) {
var obj = { nodeName: node.name, componentCount: node._components.length, componentNameListText: null };
var componentNameList = node._components.map(function (component) {
return component.name;
});
obj.componentNameListText = componentNameList.join(' ');
nodeComponentMsglist.push(obj);
});
};
var outputNodeList = function () {
startSearchNode();
getComponentList();
console.table(nodeComponentMsglist);
};
outputNodeList();
ts 代码如下:
let scene = cc.director.getScene();
let nodeList: Array<cc.Node> = new Array<cc.Node>();
let total = 0;
let startTime = new Date().valueOf();
let searchNode = (node: cc.Node) => {
nodeList.push(node);
total++;
for (let i = 0; i < node.childrenCount; i++) {
searchNode(node.children[i]);
}
}
let startSearchNode = () => {
total = 0;
startTime = new Date().valueOf();
nodeList = new Array<cc.Node>();
searchNode(scene);
console.log(`searchNode total:${total} time:${(new Date().valueOf() - startTime)}`);
}
let nodeComponentMsglist: Array<{ nodeName: string, componentCount: number, componentNameListText: string }> = [];
let getComponentList = () => {
nodeComponentMsglist = [];
nodeList.forEach((node) => {
let obj = { nodeName: node.name, componentCount: node._components.length, componentNameListText: null };
let componentNameList = node._components.map((component: cc.Component) => {
return component.name;
});
obj.componentNameListText = componentNameList.join(' ');
nodeComponentMsglist.push(obj);
});
}
let outputNodeList = () => {
startSearchNode();
getComponentList();
console.table(nodeComponentMsglist);
}
outputNodeList();
###这是获取当前场景所有节点挂载脚本的ts代码,注释掉的部分是获取所有用户组件脚本的函数:
let scene = cc.director.getScene();
let nodeList: Array<cc.Node> = new Array<cc.Node>();
let total = 0;
let startTime = new Date().valueOf();
let searchNode = (node: cc.Node) => {
nodeList.push(node);
total++;
for (let i = 0; i < node.childrenCount; i++) {
searchNode(node.children[i]);
}
}
let startSearchNode = () => {
total = 0;
startTime = new Date().valueOf();
nodeList = new Array<cc.Node>();
searchNode(scene);
console.log(`searchNode total:${total} time:${(new Date().valueOf() - startTime)}`);
}
// let userScriptComponentNameList: Array<string> = [];
// let searchUserScriptComponent = () => {
// userScriptComponentNameList = [];
// if (!CC_EDITOR) {
// return;
// }
// let registeredClassObj = cc.js['_registeredClassNames'];
// for (let propertyStr in registeredClassObj) {
// if (registeredClassObj.hasOwnProperty(propertyStr)) {
// let cid = registeredClassObj[propertyStr].prototype.__cid__;
// let componentName = registeredClassObj[propertyStr].prototype.__classname__;
// if (cid !== componentName) {
// userScriptComponentNameList.push(componentName);
// }
// }
// }
// }
let userScriptComponentTotal = 0;
let nodeComponentMsglist: Array<{ nodeName: string, componentCount: number, componentNameListText: string }> = [];
let getComponentList = () => {
nodeComponentMsglist = [];
userScriptComponentTotal = 0;
nodeList.forEach((node) => {
let obj = { nodeName: node.name, componentCount: node._components.length, componentNameListText: null };
var componentNameList: Array<string> = [];
node._components.forEach((component: cc.Component) => {
let cid = component['__proto__']['__cid__'];
let userScriptComponentName = component['__proto__']['__classname__'];
if (cid !== userScriptComponentName) {
componentNameList.push(userScriptComponentName);
}
});
obj.componentNameListText = componentNameList.join(' ');
obj.componentCount = componentNameList.length;
userScriptComponentTotal += componentNameList.length;
nodeComponentMsglist.push(obj);
});
}
let outputNodeList = () => {
startSearchNode();
getComponentList();
console.table(nodeComponentMsglist);
console.log(`用户脚本数量:${userScriptComponentTotal}`);
}
outputNodeList();
###在我的项目里面的测试结果:
###这是获取当前场景所有节点挂载脚本的ts代码代码对应的js代码:
var scene = cc.director.getScene();
var nodeList = new Array();
var total = 0;
var startTime = new Date().valueOf();
var searchNode = function (node) {
nodeList.push(node);
total++;
for (var i = 0; i < node.childrenCount; i++) {
searchNode(node.children[i]);
}
};
var startSearchNode = function () {
total = 0;
startTime = new Date().valueOf();
nodeList = new Array();
searchNode(scene);
console.log(“searchNode total:” + total + " time:" + (new Date().valueOf() - startTime));
};
// let userScriptComponentNameList: Array = [];
// let searchUserScriptComponent = () => {
// userScriptComponentNameList = [];
// if (!CC_EDITOR) {
// return;
// }
// let registeredClassObj = cc.js[’_registeredClassNames’];
// for (let propertyStr in registeredClassObj) {
// if (registeredClassObj.hasOwnProperty(propertyStr)) {
// let cid = registeredClassObj[propertyStr].prototype.cid;
// let componentName = registeredClassObj[propertyStr].prototype.classname;
// if (cid !== componentName) {
// userScriptComponentNameList.push(componentName);
// }
// }
// }
// }
var userScriptComponentTotal = 0;
var nodeComponentMsglist = [];
var getComponentList = function () {
nodeComponentMsglist = [];
userScriptComponentTotal = 0;
nodeList.forEach(function (node) {
var obj = { nodeName: node.name, componentCount: node._components.length, componentNameListText: null };
var componentNameList = [];
node._components.forEach(function (component) {
var cid = component[‘proto’][‘cid’];
var userScriptComponentName = component[‘proto’][‘classname’];
if (cid !== userScriptComponentName) {
componentNameList.push(userScriptComponentName);
}
});
obj.componentNameListText = componentNameList.join(’ ');
obj.componentCount = componentNameList.length;
userScriptComponentTotal += componentNameList.length;
nodeComponentMsglist.push(obj);
});
};
var outputNodeList = function () {
startSearchNode();
getComponentList();
console.table(nodeComponentMsglist);
console.log("\u7528\u6237\u811A\u672C\u6570\u91CF\uFF1A" + userScriptComponentTotal);
};
outputNodeList();


