37 lines
1.0 KiB
Markdown
37 lines
1.0 KiB
Markdown
# 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"] 的路径
|
|
}
|
|
```
|