Description
Changelog
Reviews (1)

Dear ImGUI is a handy-dandy immediate mode graphical user interface commonly used for tooling and debugging.

NOTICE: After updating the addon or changing engine versions, restart the engine, then toggle the plugin and singleton off and on again.

Supports

  • Editor: Godot 4.3+
  • Language: GDScript, C#, Rust
  • Platform: Windows, Linux, macOS, Web

Usage - GDScript

ImGui is a global Node (ImGuiApi class). Build UI inside its per-frame imgui_layout signal (emitted from Rust):

func _ready() -> void:
    ImGui.imgui_layout.connect(self._on_layout)

func _on_layout() -> void:
    if ImGui.begin("Window"):
        ImGui.text("hello")
        if ImGui.button("ok", 0.0, 0.0):
            print("clicked")
    ImGui.end()

Usage - CSharp

On the .NET build of Godot, drive the same API from C# via the static ImGui wrapper (addons/dear-imgui-godot/dotnet/ImGui.cs). It mirrors the GDScript methods. Connect a handler with ImGui.OnLayout to build UI.

using Godot;inside

public partial class ImGuiExample : Node
{
    public override void _Ready() => ImGui.OnLayout(OnLayout);

    private void OnLayout()
    {
        if (ImGui.Begin("Window"))
        {
            ImGui.Text("hello");
            if (ImGui.Button("ok"))
                GD.Print("clicked");
        }
        ImGui.End();
    }
}

Usage - Rust

For complete imgui-rs API access, build UI in Rust with with_ui, called from a handler connected to imgui_layout.

use godot::prelude::*;
use crate::with_ui;

#[godot_api]
impl ImGuiExample {
    #[func]
    fn on_layout(&mut self) {
        with_ui(|ui| {
            ui.window("Rust window").build(|| {
                ui.text("the entire imgui-rs API is available here");
                // ui.slider(...), ui.plot_lines(...), ui.input_text(...), etc.
            });
        });
    }
}

Changelog for version 1.17.1

No changelog provided for this version.

Reviews

Recommended by JekSun - 27 June 2026

Login to write a review.