#bevy-plugin #bevy #gamedev #progress-bar #game


Bevy plugin to help implement loading states

12 releases (breaking)

0.11.0 Feb 18, 2024
0.10.0 Nov 7, 2023
0.9.1 Jul 18, 2023
0.8.0 Mar 9, 2023
0.4.0 Jul 31, 2022

#187 in Game dev

Download history 256/week @ 2023-12-23 168/week @ 2023-12-30 201/week @ 2024-01-06 293/week @ 2024-01-13 241/week @ 2024-01-20 138/week @ 2024-01-27 119/week @ 2024-02-03 198/week @ 2024-02-10 569/week @ 2024-02-17 516/week @ 2024-02-24 300/week @ 2024-03-02 359/week @ 2024-03-09 318/week @ 2024-03-16 243/week @ 2024-03-23 342/week @ 2024-03-30 192/week @ 2024-04-06

1,131 downloads per month
Used in 4 crates


401 lines

Progress Tracking Helper Crate

Crates.io docs MIT/Apache 2.0

This crate was formerly known as bevy_loading!

Bevy Compatibility:

Bevy Version Plugin Version
main bevy_main
0.13 main
0.13 0.11
0.12 0.10
0.11 0.9
0.10 0.8
0.9 0.7
0.8 0.4,0.5, 0.6
0.7 0.3
0.6 bevy_loading = 0.2
0.5 bevy_loading = 0.1

This crate helps you in cases where you need to track when a bunch of work has been completed, and perform a state transition.

The most typical use case are loading screens, where you might need to load assets, prepare the game world, etc… and then transition to the in-game state when everything is done.

However, this crate is general, and could also be used for any number of other things, even things like cooldowns and animations.

To use this plugin, add one or more instances ProgressPlugin to your App, configuring for the relevant states.

Implement your tasks as regular Bevy systems that return a Progress and add them to your respective state(s) using .track_progress().

The return value indicates how much progress a system has completed so far. It specifies the currently completed "units of work" as well as the expected total.

When all registered systems return a progress value where done >= total, your desired state transition will be performed automatically.

If you need to access the overall progress information (say, to display a progress bar), you can get it from the ProgressCounter resource.

There is also an optional feature (assets) implementing basic asset loading tracking. Just add your handles to the AssetsLoading resource.

If you need something more advanced, I recommend the bevy_asset_loader crate, which now has support for integrating with this crate. :)


See the example for an overview of how to use this crate.


~731K SLoC