-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Open
Labels
Description
Cocos Creator version
3.8.x
System information
Window10
Issue description
删除常驻节点没有删除场景依赖资源
引擎release-manager脚本中,_removePersistNodeRef函数没有删除常驻节点资源依赖,可以修改为:
public _removePersistNodeRef (node: Node): void {
if (!this._persistNodeDeps.has(node.uuid)) { return; }
const deps = this._persistNodeDeps.get(node.uuid) as string[];
for (let i = 0, l = deps.length; i < l; i++) {
const dependAsset = assets.get(deps[i]);
if (dependAsset) {
dependAsset.decRef();
}
}
// 新增:从当前场景的 persistDeps 中移除对应的依赖项
const curScene = cclegacy.director.getScene();
if (curScene ) {
const sceneDeps = dependUtil._depends.get(curScene .uuid);
if (sceneDeps && sceneDeps.persistDeps) {
// 从 persistDeps 中移除所有属于该节点的依赖
for (let i = sceneDeps.persistDeps.length - 1; i >= 0; i--) {
const dep = sceneDeps.persistDeps[i];
if (deps.includes(dep)) {
sceneDeps.persistDeps.splice(i, 1);
}
}
}
}
this._persistNodeDeps.remove(node.uuid);
}
Relevant error log output
No response
Steps to reproduce
上面已提供修改方法,引擎组可参考是否合并进代码里
Minimal reproduction project
No response