#egui #ggez #gamedev #gui

ggez-egui

ggez的egui简单实现

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每月下载量

MIT 许可证

26KB
340

latest version

ggez_egui

egui提供的ggez游戏框架的实现

第一步

要使用此实现,您必须首先将"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