10个版本
0.3.1 | 2022年12月20日 |
---|---|
0.2.1 | 2022年5月29日 |
0.1.7 | 2022年3月2日 |
0.1.6 | 2022年2月18日 |
0.1.0 | 2021年7月27日 |
#1353 in 游戏开发
46每月下载量
26KB
340 行
ggez_egui
第一步
要使用此实现,您必须首先将"EguiBackend"添加到您的游戏结构中并初始化它。 Ej
struct MyGame {
egui_backend: EguiBackend,
...
}
...
let game = MyGame {
egui_backend: EguiBackend::default(), //or EguiBackend::new(ctx)
...
}
以后,在"EventHandler"的"update"部分中,我们将添加ui的结构和逻辑,在"draw"部分中我们将绘制ui,最后我们将检测用户输入。 Ej
impl EventHandler<GameResult> for MyGame {
fn update(&mut self, ctx: &mut Context) -> GameResult {
let egui_ctx = self.egui_backend.ctx();
egui::Window::new("egui-window").show(&egui_ctx, |ui| {
ui.label("a very nice gui :3");
if ui.button("print \"hello world\"").clicked() {
println!("hello world");
}
if ui.button("quit").clicked() {
quit(ctx);
}
});
self.egui_backend.update(ctx); // Update the input with the data from the context with exceptions (scale_factor, resize, mouse_wheel, and text_input)
Ok(())
}
fn draw(&mut self, ctx: &mut Context) -> GameResult {
clear(ctx, Color::BLACK);
draw(ctx, &self.egui_backend, ([0.0, 0.0],))?;
present(ctx)
}
}
在这种情况下,我们只处理鼠标输入,所以我们只使用这三个函数(mouse_button_down_event, mouse_button_up_event, mouse_motion_event),它们不需要太多解释,因为它们的名称已经很直观。如果我们需要在窗口中管理其他事物,如键盘、大小或甚至缩放因子,也存在相应的函数,请参阅输入文档。
这里有一些示例,了解如何使用此实现。
依赖项
~28–44MB
~599K SLoC