64 lines
1.5 KiB
Markdown
64 lines
1.5 KiB
Markdown
|
|
# ResourceFileSystem::EnumerateResources
|
||
|
|
|
||
|
|
## 方法签名
|
||
|
|
|
||
|
|
```cpp
|
||
|
|
void EnumerateResources(const Containers::String& pattern, Containers::Array<ResourceInfo>& outResources) const;
|
||
|
|
```
|
||
|
|
|
||
|
|
## 所属类
|
||
|
|
|
||
|
|
`XCEngine::Resources::ResourceFileSystem`
|
||
|
|
|
||
|
|
## 描述
|
||
|
|
|
||
|
|
枚举所有匹配指定模式的资源。模式支持通配符(如 `*.png`、`textures/**` 等)。
|
||
|
|
|
||
|
|
此方法线程安全。
|
||
|
|
|
||
|
|
## 参数
|
||
|
|
|
||
|
|
| 参数名 | 类型 | 描述 |
|
||
|
|
|--------|------|------|
|
||
|
|
| `pattern` | `const Containers::String&` | 文件名匹配模式 |
|
||
|
|
| `outResources` | `Containers::Array<ResourceInfo>&` | 输出容器,接收匹配的资源信息列表 |
|
||
|
|
|
||
|
|
## 返回值
|
||
|
|
|
||
|
|
无
|
||
|
|
|
||
|
|
## 示例
|
||
|
|
|
||
|
|
```cpp
|
||
|
|
#include "Resources/ResourceFileSystem.h"
|
||
|
|
|
||
|
|
using namespace XCEngine::Resources;
|
||
|
|
|
||
|
|
ResourceFileSystem& fs = ResourceFileSystem::Get();
|
||
|
|
fs.Initialize("C:/Game/Resources");
|
||
|
|
fs.AddDirectory("C:/Game/Assets");
|
||
|
|
|
||
|
|
Containers::Array<ResourceInfo> resources;
|
||
|
|
|
||
|
|
// 枚举所有 PNG 纹理
|
||
|
|
fs.EnumerateResources("**/*.png", resources);
|
||
|
|
printf("Found %zu PNG files:\n", resources.Size());
|
||
|
|
for (const auto& res : resources) {
|
||
|
|
printf(" - %s (%zu bytes)\n", res.path.CStr(), res.size);
|
||
|
|
}
|
||
|
|
|
||
|
|
// 枚举所有着色器
|
||
|
|
resources.Clear();
|
||
|
|
fs.EnumerateResources("**/*.glsl", resources);
|
||
|
|
printf("Found %zu shader files:\n", resources.Size());
|
||
|
|
|
||
|
|
// 枚举特定目录下的资源
|
||
|
|
resources.Clear();
|
||
|
|
fs.EnumerateResources("textures/**/*.png", resources);
|
||
|
|
```
|
||
|
|
|
||
|
|
## 注意事项
|
||
|
|
|
||
|
|
- 当前实现尚未完成,输出容器可能为空
|
||
|
|
- 模式语法的具体支持情况待实现
|