From 011f8ce97bc8d3025906ecffd66e5d9c280dfe07 Mon Sep 17 00:00:00 2001 From: shishanyue <62888460+shishanyue@users.noreply.github.com> Date: Sat, 21 Jun 2025 09:06:31 +0800 Subject: [PATCH] have a problem --- crates/bevy_asset/src/batch.rs | 14 ++++++++++---- examples/asset/extra_source.rs | 11 +++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/crates/bevy_asset/src/batch.rs b/crates/bevy_asset/src/batch.rs index abc56b52e5..a0317e56ff 100644 --- a/crates/bevy_asset/src/batch.rs +++ b/crates/bevy_asset/src/batch.rs @@ -1,17 +1,23 @@ use alloc::vec::Vec; -use crate::{Asset, UntypedHandle}; +use crate::{Asset, AssetPath, UntypedHandle}; use bevy_reflect::TypePath; pub struct LoadBatchRequest { - pub requests: Vec<&'static str>, + pub requests: Vec>, } impl LoadBatchRequest { - pub fn new(requests: Vec<&'static str>) -> Self { - Self { requests } + pub fn new(requests: Vec) -> Self + where + T:Into>, + { + Self { + requests: requests.into_iter().map(Into::into).collect(), + } } } + /// A "loaded batch" containing handles for all assets stored in a given [`AssetPath`]. /// /// This is produced by [`AssetServer::load_batch`](crate::prelude::AssetServer::load_batch). diff --git a/examples/asset/extra_source.rs b/examples/asset/extra_source.rs index 298b9d4aa8..ce4a9fc6e3 100644 --- a/examples/asset/extra_source.rs +++ b/examples/asset/extra_source.rs @@ -8,8 +8,12 @@ use bevy::{ }, prelude::*, }; +use bevy_asset::{LoadBatchRequest, LoadedBatch}; use std::path::Path; +#[derive(Resource, Default)] +struct SpriteBatch(Handle); + fn main() { App::new() // Add an extra asset source with the name "example_files" to @@ -43,4 +47,11 @@ fn setup(mut commands: Commands, asset_server: Res) { assert_eq!(asset_path, "example_files://bevy_pixel_light.png".into()); commands.spawn(Sprite::from_image(asset_server.load(asset_path))); + + let path = Path::new("*.png"); + let source = AssetSourceId::from("example_files"); + let asset_path = AssetPath::from_path(path).with_source(source); + commands.insert_resource(SpriteBatch( + asset_server.load_batch(LoadBatchRequest::new(vec![asset_path])), + )); }