1.4 KiB
1.4 KiB
IResourceLoader::LoadAsync
virtual void LoadAsync(const Containers::String& path,
const ImportSettings* settings,
std::function<void(LoadResult)> callback)
异步加载资源。虚方法,提供默认实现(直接在调用线程执行 Load 然后调用回调)。子类可重写以提供真正的异步实现。
参数:
path- 资源文件路径settings- 导入设置callback- 加载完成后的回调函数,接收LoadResult参数
线程安全: ❌(默认实现同步执行,子类重写时需确保线程安全)
示例:
// 使用默认实现的异步加载
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 总览 - 返回类总览