Assets & Scenes
Carregue texturas, modelos e cenas no Bevy - handles, estados de assets e fluxos de trabalho de hot-reload.
Busque em todas as páginas da documentação
Carregue texturas, modelos e cenas no Bevy - handles, estados de assets e fluxos de trabalho de hot-reload.
fn setup(asset_server: Res<AssetServer>, mut commands: Commands) {
let texture: Handle<Image> = asset_server.load("sprites/player.png");
commands.spawn(Sprite::from_image(texture));
}Quando usar isso:
use bevy::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_systems(Startup, load_scene)
.add_systems(Update, watch_loading)
.run();
}
#[derive(Resource)]
struct LevelHandle(Handle<Scene>);
fn load_scene(mut commands: Commands, asset_server: Res<AssetServer>) {
let scene = asset_server.load("scenes/level1.scn.ron");
commands.insert_resource(LevelHandle(scene));
}
fn watch_loading(
level: Res<LevelHandle>,
asset_server: Res<AssetServer>,
mut scenes: ResMut<Assets<Scene>>,
mut done: Local<bool>,
mut commands: Commands,
) {
if *done {
return;
}
match asset_server.load_state(&level.0) {
bevy::asset::LoadState::Loaded => {
if scenes.get(&level.0).is_some() {
commands.spawn(DynamicSceneRoot(level.0.clone()));
*done = true;
}
}
bevy::asset::LoadState::Failed(err) => eprintln!("load failed: {err:?}"),
_ => {}
}
}O que isso demonstra:
LoadState antes de gerar DynamicSceneRootAssets<T> tipados.| Caminho | Conteúdo |
|---|---|
assets/sprites/ | Texturas PNG/WebP |
assets/audio/ | OGG/WAV |
assets/scenes/ | Níveis .scn.ron |
assets/models/ | 3D GLTF/OBJ |
LoadState::Loaded.Reflect em componentes personalizados.| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
Incorporar com include_bytes! | Binário de jam minúsculo | Pipeline de arte grande |
| Arquivos de pacote externos | DRM ou DLC | Mods simples abertos |
| Apenas Procedural | Brinquedos de shader | Conteúdo orientado por artista |
| Crate de streaming de assets | Mundo aberto | Níveis lineares pequenos |
SceneRoot do caminho glTF gera malhas/materiais - caminho 3D comum em exemplos do Bevy.
asset_server.load("audio/hit.ogg") -> Handle<AudioSource> em componentes AudioPlayer.
Estilo asset_server.load("player.png#Texture") para arquivos multi-asset como GLTF.
Coletar handles no estado do menu; transicionar quando todos is_loaded_with_dependencies.
Carregar assets do diretório do usuário com montagem separada de AssetSource - padrão de plugin avançado.
Hashear nomes de arquivos de conteúdo ou manifest JSON para invalidar cache em builds enviados.
Cenas são hierarquias serializadas; prefabs frequentemente funções de spawn Bundle personalizadas em código.
Soltar handles quando o nível é descarregado; Assets::remove entradas não utilizadas em transições de cena.
Usar plugins headless/minimal e simular handles para testes de lógica.
Núcleo da arquitetura do plugin de assets do Bevy Engine.
Versões da Pilha: Esta página foi escrita para Rust 1.97.0 (edição 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4, e Polars 0.46+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026