Files
XCEngine/docs/api/resources/resource-loader/loadasync.md

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();
    }
};

相关文档