docs: update resources API docs
This commit is contained in:
45
docs/api/resources/resource-loader/loadasync.md
Normal file
45
docs/api/resources/resource-loader/loadasync.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# IResourceLoader::LoadAsync
|
||||
|
||||
```cpp
|
||||
virtual void LoadAsync(const Containers::String& path,
|
||||
const ImportSettings* settings,
|
||||
std::function<void(LoadResult)> callback)
|
||||
```
|
||||
|
||||
异步加载资源。虚方法,提供默认实现(直接在调用线程执行 Load 然后调用回调)。子类可重写以提供真正的异步实现。
|
||||
|
||||
**参数:**
|
||||
- `path` - 资源文件路径
|
||||
- `settings` - 导入设置
|
||||
- `callback` - 加载完成后的回调函数,接收 `LoadResult` 参数
|
||||
|
||||
**线程安全:** ❌(默认实现同步执行,子类重写时需确保线程安全)
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
// 使用默认实现的异步加载
|
||||
ResourceManager::Get().LoadAsync<Texture>("textures/player.png",
|
||||
nullptr, [](LoadResult result) {
|
||||
if (result.success) {
|
||||
Texture* tex = static_cast<Texture*>(result.resource);
|
||||
// 使用纹理
|
||||
}
|
||||
});
|
||||
|
||||
// 子类重写提供真正的异步实现
|
||||
class AsyncTextureLoader : public IResourceLoader {
|
||||
void LoadAsync(const Containers::String& path,
|
||||
const ImportSettings* settings,
|
||||
std::function<void(LoadResult)> callback) override {
|
||||
std::thread([this, path, settings, callback]() {
|
||||
LoadResult result = Load(path, settings);
|
||||
callback(result);
|
||||
}).detach();
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [IResourceLoader 总览](resource-loader.md) - 返回类总览
|
||||
Reference in New Issue
Block a user