SuperAPI AI 工具集

bevy-assets

编程与开发

查看项目

更新于 10-15 17:33

技能介绍

用途:在 Bevy 0.19 中加载模型、纹理、音频或场景,读取已加载的 Assets<T> 数据,响应加载进度,生成 glTF 场景并干净地拥有或销毁实例,以及开发期启用热重载。自研加载器另见 bevy-custom-assets。

主要能力:通过 AssetServer::load 生成 Handle<T>,glTF 场景用子资产标签寻址,如模型的 "models/hero.glb#Scene0" 和纹理的 "textures/bricks.png";用 MessageReader<AssetEvent<T>> 监听 AssetEvent::LoadedWithDependencies 或 Added/Modified;用 asset_server.load_state(...) == LoadState::Loaded 判断就绪后再生成 WorldAssetRoot;用 AssetPath::from(...) 与 with_label(...) 构造带标签路径。

使用方式:在 DefaultPlugins 中设置 AssetPlugin 的 watch_for_changes_override: Some(true) 开启开发期热重载;在 Resource 中保存 Handle;load 是非阻塞的,不能在调用后立即用 Assets<T>::get 取值。

限制与 0.19 变更:热重载仅用于开发,会轮询文件系统,不要带入发布构建;AssetEvent 是 Message,需用 MessageReader 而非旧的 EventReader;LoadContext::path() 返回 AssetPath 而非 &Path;SeekableReader 为 0.18 新增,0.19 中每个 Reader 都实现 seekable(),AsyncSeekForward 已移除;高级加载推荐 AssetServer::load_builder(),众多 load_* 变体已弃用;AssetPath::resolve 现在接收 &AssetPath,文本子路径用 resolve_str/resolve_embed_str;AssetSourceBuilder::new(...) 取代旧写法,AssetSource 通道在 0.18 改为 async_channel::Sender,需用 send_blocking(...);Image::reinterpret_size 在 0.18 返回 Result;子资产标签产生不同 Handle,可独立加载,漏写标签会得到根资产;glTF 的 names/entity IDs 不是持久化契约,存档见 bevy-save-load。