Files
XCEngine/docs/api/resources/resource-dependency-graph/has-circular-dependency.md

1.0 KiB

HasCircularDependency

检测资源是否存在循环依赖。

方法签名

bool HasCircularDependency(ResourceGUID guid, Containers::Array<ResourceGUID>& outCycle) const;

详细描述

检测从指定资源出发是否存在循环依赖关系。算法使用深度优先搜索遍历依赖图,如果发现在同一条路径上访问同一个节点两次,则说明存在循环依赖。

当检测到循环时,outCycle 参数将被填充为从起点到循环点的路径(包含循环点)。

参数

参数 类型 描述
guid ResourceGUID 起始资源的全局唯一标识符
outCycle Containers::Array<ResourceGUID>& 输出参数,接收检测到的循环路径

返回值

bool - 如果存在循环依赖返回 true,否则返回 false

示例

// 假设存在循环: A -> B -> C -> A
Containers::Array<ResourceGUID> cycle;
if (graph.HasCircularDependency("A"_guid, cycle)) {
    // cycle 包含类似 ["A", "B", "C", "A"] 的路径
}