4 releases
Uses new Rust 2024
| 0.2.1 | Mar 25, 2026 |
|---|---|
| 0.2.0 | Feb 11, 2026 |
| 0.1.1 | Feb 6, 2026 |
| 0.1.0 | Nov 24, 2025 |
#1710 in Game dev
Used in souprune
5.5MB
285 lines
bevy_ecs_typewriter
bevy_ecs_typewriter — A pure text typewriter effect plugin for Bevy.
| English | Simplified Chinese |
|---|---|
| English | 简体中文 |
Introduction
bevy_ecs_typewriter is a lightweight typewriter effect plugin for the Bevy game engine.
It provides pure text management without any dependency on UI components, making it flexible for various use cases.
With bevy_ecs_typewriter, you can create typewriter effects for dialogues, subtitles, or any text animations with simple component-based control.
Features
- 🎮 Pure Text Management - No dependency on UI components, works with any rendering solution
- ⚡ Simple API - Easy to use with play, pause, resume, and stop controls
- 🌏 Full Unicode Support - Works with any language including CJK, Arabic, Emoji, etc.
- 🔄 Multiple Typewriters - Run multiple typewriters simultaneously
- ⏱️ Dynamic Speed Control - Adjust typing speed in real-time
- 📊 Progress Tracking - Get current progress and state information
Bevy Version Support
bevy |
bevy_ecs_typewriter |
|---|---|
| 0.18 | 0.2.0 |
| 0.17 | < 0.2.0 |
How to Use
-
Add to Cargo.toml:
[dependencies] bevy = "0.18" bevy_ecs_typewriter = "0.2.0" -
Add the plugin to your app:
use bevy::prelude::*; use bevy_ecs_typewriter::{Typewriter, TypewriterPlugin}; fn main() { App::new() .add_plugins(DefaultPlugins) .add_plugins(TypewriterPlugin) .add_systems(Startup, setup) .run(); } -
Create a typewriter entity:
fn setup(mut commands: Commands) { let mut typewriter = Typewriter::new("Hello, World!", 0.1); typewriter.play(); commands.spawn(typewriter); } -
Access the current text:
fn display_system(query: Query<&Typewriter, Changed<Typewriter>>) { for typewriter in &query { println!("{}", typewriter.current_text); } }
Examples
Run the examples to see the plugin in action:
# Basic control with keyboard input
cargo run --example basic_control
# Multiple typewriters running simultaneously
cargo run --example multiple_typewriters
# Unicode support (Chinese, Japanese, Korean, Arabic, Emoji)
cargo run --example multilingual
# Chain multiple dialogues automatically
cargo run --example chain_typewriters
# Dynamic speed control
cargo run --example dynamic_speed
Dependencies
This project uses the following crates:
| Crate | Version | Description |
|---|---|---|
| bevy | 0.18 | Game engine |
Contributing
Contributions are welcome! Whether you want to fix a bug, add a feature, or improve documentation:
- Submit an Issue or Pull Request.
- Share ideas and discuss design or architecture.
License
This project is licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Dependencies
~43MB
~760K SLoC