我从creator3.8.6升级到3.8.7,在编辑器中运行,环境是windows,发现同样的代码,在3.8.6中很快,在3.8.7中就很慢,结果排查,慢在addChild中,我的代码是加载bundle中的预制体并实例化然后addChild到某个节点中,代码如下:
let bundleName = “club”
let prefabPath = “prefabs/ClubTableBaseItem2”
assetManager.loadBundle(bundleName, (err, bundle) => {
if (!err) {
bundle.load(prefabPath, Prefab, (err, prefab) => {
if (!err) {
let parent = Globals.popRoot
let nodes: Node[] = []
let t = Date.now()
for (let i = 0; i < 8; ++i) {
let node = instantiate(prefab)
parent.addChild(node)
nodes.push(node)
}
console.info(total took ${Date.now() - t} ms)
for (let node of nodes) {
node.destroy()
}
}
})
}
})
预制体越复杂,节点越多,就越慢
能给一下 demo 吗?可以附加一下相关 prefab ,我们调试一下?
稍后我做一个demo吧。目前工程比较大。
test387.zip (300.7 KB)
demo做出来了,在编辑器中运行,只有一个按钮
我还发现,addChild次数越多越慢,3.8.6也是这样,只不过3.8.6第一次addChild比3.8.7快很多
test387.zip (300.7 KB)
demo做出来了,在编辑器中运行,只有一个按钮
我还发现,addChild次数越多越慢,3.8.6也是这样,只不过3.8.6第一次addChild比3.8.7快很多
感谢反馈,排查到原因了,是因为在编辑器环境下节点发生变化(新增、删除)都会出现 record update dump 节点的处理,导致耗时过大,会在 3.8.8 修复
这个原因也会引起随着addChild次数增加越来越慢吗?
只有节点发生的变化,都会被触发 dump,节点一多耗时就会过大
我的代码每次都会destroyAllChildren的,按理说每次的节点数是一样的,难道destroyAllChildren没删干净?
不是,跟引擎代码没有关系的,是编辑器代码导致的,可以先用浏览器预览
预览也是巨慢,调试效果都没法调
有热更方案吗,目前就剩这个最大的问题了
抱歉目前没有
请问3.8.8计划什么时候发布?
3.8.6到3.8.7大概4个月,新的版本,会比四个月少.按这么想就行了.
这个addChild慢的问题,应该是严重问题了,严重影响开发效率,应该要加急处理
为什么不搞个修复版本啊?项目上线后遇到问题了,升大版本风险太大,如果有3.8.7的修复版本,不是稳很多吗?