#bevy #logic #encapsulate #spawn #builder

bevy_spawnable

tiny spawn utility for Bevy, to encapsulate spawn logic

12 unstable releases (5 breaking)

0.6.0 Jan 15, 2026
0.5.1 Jan 9, 2026
0.5.0 Oct 1, 2025
0.4.0 May 8, 2025
0.1.3 Apr 24, 2024

#578 in Game dev

WTFPL OR 0BSD

38KB

bevy_spawnable

Crates.io Docs.rs License

A tiny spawn utility for bevy. This crate will helps you:

  • encapsulate the spawn logic into a single function or object.
  • no worry about builder is Commands or ChildBuilder.

You can use this crate as a kind of like Unity's prefab as a code object, or builder to create entities which have complex structure.

( If you need more detailed spawn utility, consider moonshine_spawn as an alternative. )

Usage

see examples

simple.rs

use bevy::{ecs::system::EntityCommands, prelude::*};
use bevy_spawnable::*;

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_systems(Startup, setup)
        .run();
}

pub struct Hello {
    pub text: String
}

impl Spawnable for Hello {
    fn spawn<'a>(&mut self, builder: &'a mut impl GenericBuilder) -> EntityCommands<'a> {
        let mut e = builder.spawn(Node {
            width: Val::Percent(100.),
            height: Val::Percent(100.),
            flex_direction: FlexDirection::Column,
            justify_content: JustifyContent::Center,
            align_items: AlignItems::Center,
            ..default()
        });

        e.with_children(|root| {
            root.spawn((
                Text::new(self.text.clone()),
                TextFont {
                    font_size: 50.0,
                    ..default()
                },
                TextColor (
                    Color::WHITE.into()
                ),
                TextLayout::new_with_justify(JustifyText::Center)
            ));
        });

        e
    }}

fn setup(mut commands: Commands) {
    commands.spawn(Camera2d::default());

    commands.spawns(&mut Hello {
        text: "Hello, Bevy!".to_string()
    });
}

Versions

bevy bevy_spawnable
0.18 0.6
0.17 0.5
0.16 0.4
0.15 0.3
0.14 0.2
0.13 0.1

License

Dual licensed under WTFPL and/or 0BSD.

Dependencies

~20–34MB
~550K SLoC