Skip to content

删除常驻节点没有删除场景依赖资源 #18509

@mo0632

Description

@mo0632

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugNeeds TriageNeeds to be assigned by the team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions