#egui #ggez #gui #gamedev

ggegui

A simple implementation of egui for ggez

9次发布

0.4.0 2024年2月26日
0.3.9 2024年2月26日
0.3.8 2023年11月19日
0.3.7 2023年7月8日
0.3.4 2023年2月28日

#470 in 游戏开发

Download history 27/week @ 2024-03-28 30/week @ 2024-04-04 3/week @ 2024-04-11 6/week @ 2024-05-16 4/week @ 2024-05-23 4/week @ 2024-05-30 5/week @ 2024-06-06 60/week @ 2024-07-04 18/week @ 2024-07-11

78 monthly downloads

MIT license

29KB
366

crates.io docs.rs

ggegui

An egui implementation for the ggez game framework

超简易示例

use ggegui::{egui, Gui};
use ggez::{
	ContextBuilder, Context, GameResult, glam,
	event::{ self, EventHandler}, 
	graphics::{ self, DrawParam, Color }
};

fn main() {
	let (mut ctx, event_loop) = ContextBuilder::new("game_id", "author").build().unwrap();
	let state = State::new(&mut ctx);
	event::run(ctx, event_loop, state);
}

struct State {
	gui: Gui,
} 

impl State {
	pub fn new(ctx: &mut Context) -> Self {
		Self { 
			gui: Gui::new(ctx),
		}
	} 
} 

impl EventHandler for State {
	fn update(&mut self, ctx: &mut Context) -> GameResult {
		let gui_ctx = self.gui.ctx();

		egui::Window::new("Title").show(&gui_ctx, |ui| {
			ui.label("label");
			if ui.button("button").clicked() {
				println!("button clicked");
			}
		});
		self.gui.update(ctx);
		Ok(())
	}

	fn draw(&mut self, ctx: &mut Context) -> GameResult {
		let mut canvas = graphics::Canvas::from_frame(ctx, Color::BLACK);
		canvas.draw(
			&self.gui, 
			DrawParam::default().dest(glam::Vec2::ZERO),
		);
		canvas.finish(ctx)
	}
}

有几个示例展示如何使用此实现。

依赖

~21–55MB
~1M SLoC