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 游戏开发
78 monthly downloads
29KB
366 行
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