Skip to content

pkdawson/imgui-godot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
Jun 6, 2024
Jun 9, 2024
May 4, 2024
Jun 9, 2024
Jun 9, 2024
May 4, 2024
May 3, 2024
Apr 30, 2024
Aug 11, 2022
May 16, 2024
Apr 30, 2024
Jun 8, 2024
Oct 14, 2022
Apr 30, 2024
May 4, 2024
Jun 6, 2024
Apr 30, 2024

Repository files navigation

Dear ImGui plugin for Godot 4

screenshot

Dear ImGui is a popular library for rapidly building tools for debugging and development. This plugin, with the aid of ImGui.NET, allows you to use ImGui in Godot with C#, C++, and GDScript.

After installing the plugin, usage is as simple as this:

public partial class MyNode : Node
{
    public override void _Process(double delta)
    {
        ImGui.Begin("ImGui on Godot 4");
        ImGui.Text("hello world");
        ImGui.End();
    }
}
extends Node

func _process(delta):
    ImGui.Begin("My Window")
    ImGui.Text("hello from GDScript")
    ImGui.End()

Download

If you only need C# support with basic features, you can use the csharp-only package. Otherwise, download the full package which includes GDExtension binaries.

download

Getting Started (C#)

  1. Create a project and, if you haven't already added some C# code, use Project > Tools > C# > Create C# solution.

  2. Install the plugin by copying over the addons folder. Or use GodotEnv.

  3. In Visual Studio or another IDE, open the solution and allow unsafe code, and install ImGui.NET with NuGet. Set your target framework to .NET 8 or later. Save and return to Godot.

    (If you prefer to manually edit the .csproj instead, refer to the demo csproj for the necessary modifications.)

Important

If you are using the GDExtension, you must use a version of ImGui.NET which matches the version that the GDExtension was built with.

  1. Back in the Godot editor, click Build.

  2. Enable the plugin in Project > Project Settings > Plugins.

Getting Started (GDScript)

  1. Install the plugin by copying over the addons folder from the full package which includes the GDExtension.

  2. Enable the plugin in Project > Project Settings > Plugins.

Usage

In any Node's _Process method, use ImGuiNET to create your GUI. Just don't set the ProcessPriority in any of your Nodes to either int.MinValue or int.MaxValue.

Signals

You can also connect to the imgui_layout signal, and use ImGui in the method which handles that signal. This is strongly recommended if you're using process thread groups in Godot 4.1 or later.

ImGuiGD.Connect(OnImGuiLayout);

Configuration

If you want to customize fonts or other settings, create an ImGuiConfig resource, then open the scene res://addons/imgui-godot/Config.tscn, select the Config node, and set its Config property.

Widgets

These methods should only be called within _Process or an imgui_layout callback.

Image and ImageButton are simple wrappers for your convenience.

SubViewport displays an interactive viewport which receives input events. Be sure to change your SubViewport's Update Mode to Always.

ImGuiGD

This is the rest of the public API. You typically won't need to call any of these methods directly.

That's about it. Everything else is provided by ImGui itself, via ImGui.NET.

Mobile export

ImGui.NET does not support iOS, Android, or web, so all ImGui related code should be conditionally disabled if you want to export for these platforms. For example:

#if GODOT_PC
ImGui.Begin("my window");
// ...
ImGui.End();
#endif

Package managers

If you only need C# support (no GDExtension), you can use GodotEnv to install and update imgui-godot. The configuration should be something like:

{
  "addons": {
    "imgui-godot": {
      "url": "https://github.com/pkdawson/imgui-godot",
      "checkout": "5.x",
      "subfolder": "addons/imgui-godot"
    }
  }
}

Credits

Code written by Patrick Dawson and contributors, released under the MIT license

Godot Logo (C) Andrea Calabró, distributed under the terms of the Creative Commons Attribution 4.0 International License (CC-BY-4.0 International) https://creativecommons.org/licenses/by/4.0/

Hack font distributed under the MIT license

M PLUS 2 font licensed under the SIL Open Font License, Version 1.1.

3D scene demo borrowed from godot-demo-projects

This plugin's functionality relies heavily on ImGui.NET by Eric Mellino