mirror of
https://github.com/bevyengine/bevy
synced 2024-11-22 04:33:37 +00:00
Add example using State
in docs (#11319)
# Objective - It may be confusing whether [`State`](https://docs.rs/bevy_ecs/latest/bevy_ecs/schedule/struct.State.html) is a `Resource` or a `SystemParam`. - Fixes #11312. ## Solution - Add an example using `State` in a system in the docs, to clarify that it is a `Resource`. --- I basically copied the example from [`States`](https://docs.rs/bevy_ecs/latest/bevy_ecs/schedule/trait.States.html) and added a system beside it. I don't have a strong opinion on what the example should look like, so please comment if you have a better idea. :)
This commit is contained in:
parent
e2fd63104d
commit
99261232f1
1 changed files with 37 additions and 0 deletions
|
@ -74,6 +74,27 @@ pub struct OnTransition<S: States> {
|
|||
/// [`apply_state_transition::<S>`] system.
|
||||
///
|
||||
/// The starting state is defined via the [`Default`] implementation for `S`.
|
||||
///
|
||||
/// ```
|
||||
/// use bevy_ecs::prelude::*;
|
||||
///
|
||||
/// #[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default, States)]
|
||||
/// enum GameState {
|
||||
/// #[default]
|
||||
/// MainMenu,
|
||||
/// SettingsMenu,
|
||||
/// InGame,
|
||||
/// }
|
||||
///
|
||||
/// fn game_logic(game_state: Res<State<GameState>>) {
|
||||
/// match game_state.get() {
|
||||
/// GameState::InGame => {
|
||||
/// // Run game logic here...
|
||||
/// },
|
||||
/// _ => {},
|
||||
/// }
|
||||
/// }
|
||||
/// ```
|
||||
#[derive(Resource, Debug)]
|
||||
#[cfg_attr(feature = "bevy_reflect", derive(bevy_reflect::Reflect))]
|
||||
pub struct State<S: States>(S);
|
||||
|
@ -117,6 +138,22 @@ impl<S: States> Deref for State<S> {
|
|||
/// To queue a transition, just set the contained value to `Some(next_state)`.
|
||||
/// Note that these transitions can be overridden by other systems:
|
||||
/// only the actual value of this resource at the time of [`apply_state_transition`] matters.
|
||||
///
|
||||
/// ```
|
||||
/// use bevy_ecs::prelude::*;
|
||||
///
|
||||
/// #[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default, States)]
|
||||
/// enum GameState {
|
||||
/// #[default]
|
||||
/// MainMenu,
|
||||
/// SettingsMenu,
|
||||
/// InGame,
|
||||
/// }
|
||||
///
|
||||
/// fn start_game(mut next_game_state: ResMut<NextState<GameState>>) {
|
||||
/// next_game_state.set(GameState::InGame);
|
||||
/// }
|
||||
/// ```
|
||||
#[derive(Resource, Debug)]
|
||||
#[cfg_attr(
|
||||
feature = "bevy_reflect",
|
||||
|
|
Loading…
Reference in a new issue