DearImGuiInjection
Inject Dear ImGui into any process with C#
模組介紹 作者原文
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();
});
}
}
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();
});
}
Credits
Sewer56
安裝與使用 安裝:BepInEx 外掛
- 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
- 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
- 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
- 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。
帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。
下面這些內容需要先安裝,否則該模組不會生效: