Files
XCEngine/docs/api/resources/resource-dependency-graph/get-all-dependencies.md

42 lines
1.2 KiB
Markdown
Raw Normal View History

2026-03-20 02:35:35 +08:00
# GetAllDependencies
获取资源的完整依赖链(递归)。
## 方法签名
```cpp
Containers::Array<ResourceGUID> GetAllDependencies(ResourceGUID guid) const;
```
## 详细描述
使用深度优先搜索递归获取指定资源的所有传递依赖项,返回完整的依赖链。返回结果不包括 `guid` 自身,且每个资源 GUID 只出现一次(即使有多个路径依赖该资源)。
搜索算法使用栈实现 DFS遍历所有依赖项及其子依赖项。
## 参数
| 参数 | 类型 | 描述 |
|------|------|------|
| `guid` | `ResourceGUID` | 要查询的资源的全局唯一标识符 |
## 返回值
`Containers::Array<ResourceGUID>` - 完整依赖链的 GUID 数组
## 示例
```cpp
// 假设依赖关系: A -> B -> C -> D
graph.AddNode("A"_guid, ResourceType::Material);
graph.AddNode("B"_guid, ResourceType::Texture);
graph.AddNode("C"_guid, ResourceType::Image);
graph.AddNode("D"_guid, ResourceType::File);
graph.AddDependency("A"_guid, "B"_guid);
graph.AddDependency("B"_guid, "C"_guid);
graph.AddDependency("C"_guid, "D"_guid);
auto allDeps = graph.GetAllDependencies("A"_guid);
// allDeps 包含 ["B", "C", "D"](顺序可能因实现而异)
```