使用 Bevy,如何在创建后获取和设置 Window 信息?
How, with Bevy, can you get and set Window information after creation?
我希望能够与 Bevy 一起阅读和设置 window-settings。我尝试使用基本系统这样做:
fn test_system(mut win_desc: ResMut<WindowDescriptor>) {
win_desc.title = "test".to_string();
println!("{}",win_desc.title);
}
虽然这(部分)有效,但它只为您提供原始设置,根本不允许更改。在本例中,标题不会改变,但标题的显示会改变。在另一个示例中,如果您要打印 win_desc.width
.
,则不会反映更改 window-size(在 run-time 处手动更改)
目前,WindowDescriptor 仅在 window 创建期间使用,以后不会更新
为了在 window 调整大小时收到通知,我使用了这个系统:
fn resize_notificator(resize_event: Res<Events<WindowResized>>) {
let mut reader = resize_event.get_reader();
for e in reader.iter(&resize_event) {
println!("width = {} height = {}", e.width, e.height);
}
}
其他有用的事件可以在
https://github.com/bevyengine/bevy/blob/master/crates/bevy_window/src/event.rs
bevy GitHub 存储库中提供了一个使用 windows 的很好的示例:https://github.com/bevyengine/bevy/blob/master/examples/window/window_settings.rs
对于你的读写情况window大小:
fn window_resize_system(mut windows: ResMut<Windows>) {
let window = windows.get_primary_mut().unwrap();
println!("Window size was: {},{}", window.width(), window.height());
window.set_resolution(1280, 720);
}
如 zyrg 所述,您还可以监听 window 事件。
我希望能够与 Bevy 一起阅读和设置 window-settings。我尝试使用基本系统这样做:
fn test_system(mut win_desc: ResMut<WindowDescriptor>) {
win_desc.title = "test".to_string();
println!("{}",win_desc.title);
}
虽然这(部分)有效,但它只为您提供原始设置,根本不允许更改。在本例中,标题不会改变,但标题的显示会改变。在另一个示例中,如果您要打印 win_desc.width
.
目前,WindowDescriptor 仅在 window 创建期间使用,以后不会更新
为了在 window 调整大小时收到通知,我使用了这个系统:
fn resize_notificator(resize_event: Res<Events<WindowResized>>) {
let mut reader = resize_event.get_reader();
for e in reader.iter(&resize_event) {
println!("width = {} height = {}", e.width, e.height);
}
}
其他有用的事件可以在 https://github.com/bevyengine/bevy/blob/master/crates/bevy_window/src/event.rs
bevy GitHub 存储库中提供了一个使用 windows 的很好的示例:https://github.com/bevyengine/bevy/blob/master/examples/window/window_settings.rs
对于你的读写情况window大小:
fn window_resize_system(mut windows: ResMut<Windows>) {
let window = windows.get_primary_mut().unwrap();
println!("Window size was: {},{}", window.width(), window.height());
window.set_resolution(1280, 720);
}
如 zyrg 所述,您还可以监听 window 事件。