bevy_text_edit 0.0.2

Bevy plugin for input text
Documentation

bevy_text_edit

crates.io docs.rs dependency status pipeline status

Quickstart

Plugin

Add plugin EditTextPlugin to the app and define which states it will run in:

#[derive(Clone, Debug, Default, Eq, PartialEq, Hash, States)]
enum GameState {
    #[default]
    Menu,
}

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        // Add the plugin
        .add_plugins(TextEditPlugin::new(vec![GameState::Menu]))
        .run;
}

If you don't care to game state and want to always run input text, use EditTextPluginNoState:

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        // Add the plugin
        .add_plugins(EditTextPluginNoState)
        .add_systems(Startup, setup)
        .run();
}

Component

Insert component TextEditable and Interaction into any text entity that needs to be editable:

commands.spawn((
    TextEditable, // Mark text is editable
    Interaction::None, // Mark entity is interactable
    TextBundle::from_section(
        "Input Text 1",
        TextStyle {
            font_size: 20.,
            ..default()
        },
    ),
));

Only text that is focused by clicking is get keyboard input.
If you want to make a text field editable by default, insert component TextEditFocus to it when spawn:

commands.spawn((
    TextEditFocus, // Focus edit text on this entity
    TextEditable, // Mark text is editable
    Interaction::None, // Mark entity is interactable
    TextBundle::from_section(
        "Input Text 2",
        TextStyle {
            font_size: 20.,
            ..default()
        },
    ),
));

License

Please see LICENSE.

Compatible Bevy Versions

bevy bevy_text_edit
0.13 0.0.1, branch master