DearImGuiInjection 1.0.0.1
dotnet add package DearImGuiInjection --version 1.0.0.1
NuGet\Install-Package DearImGuiInjection -Version 1.0.0.1
<PackageReference Include="DearImGuiInjection" Version="1.0.0.1" />
<PackageVersion Include="DearImGuiInjection" Version="1.0.0.1" />
<PackageReference Include="DearImGuiInjection" />
paket add DearImGuiInjection --version 1.0.0.1
#r "nuget: DearImGuiInjection, 1.0.0.1"
#:package DearImGuiInjection@1.0.0.1
#addin nuget:?package=DearImGuiInjection&version=1.0.0.1
#tool nuget:?package=DearImGuiInjection&version=1.0.0.1
DearImGuiInjection
Inject Dear ImGui into any process with C#.
Installation
Unzip this zip file
Place the DearImGuiInjection directory located in BepInEx/plugins into your BepInEx plugins directory for PEAK
Usage
The keybind for bringing up the cursor for interaction is by default the Insert key, which can be modified in the configuration file.
Mod Developers
Download this package and add a reference to ImGui.NET.dll and DearImGuiInjection.dll in your C# project.
Above your BaseUnityPlugin class definition
[BepInDependency(DearImGuiInjection.Metadata.GUID)]
DearImGuiInjection.DearImGuiInjection.Render += MyUI;
private static void MyUI()
{
if (DearImGuiInjection.DearImGuiInjection.IsCursorVisible)
{
var dummy = true;
ImGui.ShowDemoWindow(ref dummy);
if (ImGui.BeginMainMenuBar())
{
if (ImGui.BeginMenu("MainBar", true))
{
if (ImGui.MenuItemBool("MyTestPlugin", null, false, true))
{
_isMyUIOpen ^= true;
}
ImGui.EndMenu();
}
ImGui.EndMainMenuBar();
}
if (ImGui.BeginMainMenuBar())
{
if (ImGui.BeginMenu("MainBar", true))
{
if (ImGui.MenuItemBool("MyTestPlugin2", null, false, true))
{
_isMyUIOpen ^= true;
}
ImGui.EndMenu();
}
ImGui.EndMainMenuBar();
}
}
if (_isMyUIOpen)
{
var dummy2 = true;
if (ImGui.Begin(Metadata.GUID, ref dummy2, (int)ImGuiWindowFlags.None))
{
ImGui.Text("hello there");
if (ImGui.Button("Click me", Constants.DefaultVector2))
{
// Interacting with the unity api must be done from the unity main thread
// Can just use the dispatcher shipped with the library for that
UnityMainThreadDispatcher.Enqueue(() =>
{
//var go = new GameObject();
//go.AddComponent<Stuff>();
});
}
}
ImGui.End();
}
}
Make sure to only interact with anything UnityEngine related from its main thread, easily doable through UnityMainThreadDispatcher
if (ImGui.Button("Click me", Constants.DefaultVector2))
{
// Interacting with the unity api must be done from the unity main thread
// Can just use the dispatcher shipped with the library for that
UnityMainThreadDispatcher.Enqueue(() =>
{
//var go = new GameObject();
//go.AddComponent<Stuff>();
});
}
Credits
- Tony Froman - Current Maintainer
- Penswer - Previous Maintainer
- Quentin - Repository Creator
- Sewer56
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.6.2
- BepInEx.Core (>= 5.4.21)
- Reloaded.Hooks (>= 4.3.0)
- System.Numerics.Vectors (>= 4.5.0)
- System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
-
.NETStandard 2.0
- BepInEx.Core (>= 5.4.21)
- Reloaded.Hooks (>= 4.3.0)
- System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
-
net6.0
- Reloaded.Hooks (>= 4.3.0)
- System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
1.0.0 (2025.09.12)
- Initial Upload
1.0.0.1 (2025.09.12)
- Fixed build system to support multiple outputs
- Added additional metadata
- Fixed dependency on internal package not available on Nuget