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

37 lines
1.0 KiB
Markdown
Raw Normal View History

2026-03-20 02:35:35 +08:00
# HasCircularDependency
检测资源是否存在循环依赖。
## 方法签名
```cpp
bool HasCircularDependency(ResourceGUID guid, Containers::Array<ResourceGUID>& outCycle) const;
```
## 详细描述
检测从指定资源出发是否存在循环依赖关系。算法使用深度优先搜索遍历依赖图,如果发现在同一条路径上访问同一个节点两次,则说明存在循环依赖。
当检测到循环时,`outCycle` 参数将被填充为从起点到循环点的路径(包含循环点)。
## 参数
| 参数 | 类型 | 描述 |
|------|------|------|
| `guid` | `ResourceGUID` | 起始资源的全局唯一标识符 |
| `outCycle` | `Containers::Array<ResourceGUID>&` | 输出参数,接收检测到的循环路径 |
## 返回值
`bool` - 如果存在循环依赖返回 `true`,否则返回 `false`
## 示例
```cpp
// 假设存在循环: A -> B -> C -> A
Containers::Array<ResourceGUID> cycle;
if (graph.HasCircularDependency("A"_guid, cycle)) {
// cycle 包含类似 ["A", "B", "C", "A"] 的路径
}
```