12 unstable releases (3 breaking)
new 0.3.1 | Oct 7, 2024 |
---|---|
0.3.0 | Aug 7, 2024 |
0.2.0 | Jul 23, 2024 |
0.1.2 | Jul 12, 2024 |
0.0.4 | Jun 16, 2024 |
#572 in Game dev
206 downloads per month
34KB
322 lines
bevy_text_edit
Quickstart
Plugin
Add plugin TextEditPlugin
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 TextEditPluginNoState
:
fn main() {
App::new()
.add_plugins(DefaultPlugins)
// Add the plugin
.add_plugins(TextEditPluginNoState)
.add_systems(Startup, setup)
.run();
}
Component
Insert component TextEditable
and Interaction
into any text entity that needs to be editable:
commands.spawn((
TextEditable::default(), // Mark text is editable
Interaction::None, // Mark entity is interactable
TextBundle::from_section(
"Input Text 1",
TextStyle::default(),
),
));
Only text that is focused by clicking gets keyboard input.
It is also possible to limit which characters are allowed to enter through filter_in
and filter_out
attribute. Regex is supported:
commands.spawn((
TextEditable {
filter_in: vec!["[0-9]".into(), " ".into()], // Only allow number and space
filter_out: vec!["5".into()], // Ignore number 5
},
Interaction::None,
TextBundle::from_section(
"Input Text 1",
TextStyle::default(),
),
));
License
Please see LICENSE.
Compatible Bevy Versions
bevy | bevy_text_edit |
---|---|
0.14 | 0.1-0.3, branch master |
0.13 | 0.0.1-0.0.5 |
Dependencies
~39–76MB
~1.5M SLoC