9 releases (5 breaking)
0.5.1 | Apr 5, 2024 |
---|---|
0.5.0 | Feb 20, 2024 |
0.4.0 | Nov 8, 2023 |
0.3.1 | Jul 11, 2023 |
0.0.2 | Jan 19, 2023 |
#291 in Game dev
81 downloads per month
30KB
188 lines
Bevy Settings
The goal of this project is to store settings in a resource throughout game launches.
Currently this crate supports Linux, Mac and Windows.
The crate will choose the appropriate path for each OS to store the config file.
Usage
This example will generate a config file on your system but it probably will not hurt you if you pick something non existent
use bevy::prelude::*;
use bevy_settings::{Serialize, Deserialize};
#[derive(Resource, Default, Serialize, Deserialize, Clone, Copy)]
#[serde(crate = "bevy_settings::serde")]
struct Settings {
master_volume: f64,
custom_cursor: bool,
}
fn main () {
App::new()
.add_plugin(bevy_settings::SettingsPlugin::<Settings>::new(
"My awesome game studio",
"The name of the game"
))
.run();
}
on e.g. my linux machine this will create
❯ cat ~/.config/myawesomegamestudio/My awesome game studio.toml
master_volume = 0.0
custom_cursor = false
Known limitations
- the toml crate has problems with large numbers e.g. u64::MAX
- there is a problem with tuple structs e.g.
TestSetting(u32)
does not work butTestSetting{ test: u32 }
works fine.
Checkout the basic example to see how to persist the configuration.
Version | Bevy Version |
---|---|
0.1.0 | 0.9 |
0.2.0 | 0.10 |
0.3.1 | 0.11 |
0.4.0 | 0.12 |
0.5.0 | 0.13 |
Dependencies
~14–27MB
~338K SLoC