1 个不稳定版本
0.1.0 | 2019年10月7日 |
---|
#836 在 GUI
32KB
257 行
imgui-log
一个将日志路由到 imgui 窗口的日志记录器。
支持独立模式(自己hook到你的UI),以及 amethyst-imgui 系统(每帧自动渲染)。
设置
将以下内容添加到你的 Cargo.toml
[dependencies]
imgui-log = "0.1.0"
基本示例
// Start the logger
let log = imgui_log::init();
// Create your UI
let ui: imgui::Ui = ... ;
// Render loop
loop {
// Output some info
info!("Hello World");
// Draw to a window
let window = imgui::Window::new(im_str!("My Log"));
log.draw(&ui, window);
}
配置
提供了一个默认配置,但如果你愿意,可以自定义格式字符串、着色等。
imgui_log::init_with_config(LoggerConfig::default()
.stdout(false)
.colors(LogColors {
trace: [1., 1., 1., 1.],
debug: [1., 1., 1., 1.],
info: [1., 1., 1., 1.],
warn: [1., 1., 1., 1.],
error: [1., 1., 1., 1.],
})
);
Amethyst 使用
启用 amethyst-system
功能。
[dependencies]
imgui-log = { version = "0.1.0", features = ["amethyst-system"] }
将 imgui::init
替换为 imgui_log::create_system
并将其添加到你的应用 .with()
语句中
如果尚未使用,请添加 RenderImgui
插件。(这从 amethyst-imgui
包中重新导出,以方便你使用)
use imgui_log::amethyst_imgui::RenderImgui;
/// ....
let app_root = application_root_dir()?;
let display_config_path = app_root.join("examples/display.ron");
let game_data = GameDataBuilder::default()
.with_barrier()
.with(imgui_log::create_system(), "imgui_log", &[]) // <--- ADDED LINE
.with_bundle(InputBundle::<StringBindings>::default())?
.with_bundle(
RenderingBundle::<DefaultBackend>::new()
.with_plugin(
RenderToWindow::from_config_path(display_config_path)
.with_clear([0.34, 0.36, 0.52, 1.0]),
)
.with_plugin(RenderImgui::<StringBindings>::default()), // <--- ADDED LINE
)?;
Application::build("/", Example)?.build(game_data)?.run();
依赖关系
~13–30MB
~450K SLoC