Unreal ImGui 使用指南
1. 项目介绍
Unreal ImGui 是一个针对 Unreal Engine 4/5 的插件,它将 Dear ImGui 框架集成到虚幻引擎中。Dear ImGui 是一个轻量级且易于使用的即时模式图形用户界面库,非常适合在开发过程中创建调试工具。
本项目是基于 Omar Cornut 开发的 Dear ImGui 库,并通过 UnrealImGui 插件使其能够在 Unreal Engine 中使用。插件支持 Unreal Engine 的多个版本,包括 4.27、5.0、5.1、5.2、5.3 和 5.4,以及可能的未来版本。
2. 项目快速启动
以下是在 Unreal Engine 项目中集成 Unreal ImGui 插件的步骤:
首先,将以下代码添加到你的虚幻项目中的合适位置:
// 例子:初始化一个 UTextureRenderTarget2D 并注册到 ImGui
void Init()
{
TextureRenderTarget = NewObject<UTextureRenderTarget2D>();
if (IsValid(TextureRenderTarget))
{
TextureRenderTarget->InitAutoFormat(512, 512);
TextureRenderTarget->UpdateResourceImmediate(true);
}
// ...生成一个唯一的 TextureName...
ImGuiTextureHandle = FImGuiModule::Get().FindTextureHandle(TextureName);
if (!ImGuiTextureHandle.IsValid() && IsValid(TextureRenderTarget))
{
ImGuiTextureHandle = FImGuiModule::Get().RegisterTexture(TextureName, TextureRenderTarget, true);
}
}
// 在渲染函数中绘制纹理
void Render()
{
if (ImGuiTextureHandle.IsValid())
{
ImGui::Image(ImGuiTextureHandle.GetTextureId(), ImVec2(512.f, 512.f));
}
}
// 析构函数中释放资源
~Class()
{
if (IsValid(TextureRenderTarget))
{
FImGuiModule::Get().ReleaseTexture(ImGuiTextureHandle);
}
}
确保在虚幻引擎中创建并配置好 ASceneCapture2D
演员,以便将渲染目标绑定到 ImGui 窗口。
3. 应用案例和最佳实践
使用 ImPlot
ImPlot 是一个基于 ImGui 的图表库,可以很容易地集成到 UnrealImGui 中。使用 ImPlot 的方式与使用 ImGui 类似。官方文档提供了详细的使用指南。
绘制 UTextureRenderTarget2D
您可能需要在 ImGui 窗口中渲染场景捕获的内容。为此,您可以创建一个 UTextureRenderTarget2D
,并将其关联到 ASceneCapture2D
演员。
添加自定义字体
例如,要将 FontAwesome 字体集成到字体集中,您需要获取 FontAwesome 字体的二进制 C 版本及其描述符,然后按照以下步骤操作:
#include "FontAwesomeFont.h"
#include "IconsFontAwesome6.h"
// 添加 FontAwesome 字体字形到内存
if (TSharedPtr<ImFontConfig> FAFontConfig = MakeShareable(new ImFontConfig()))
{
static const ImWchar IconRange[] = { ICON_MIN_FA, ICON_MAX_FA, 0 };
FAFontConfig->FontDataOwnedByAtlas = false;
FAFontConfig->FontData = (void*)FontAwesomeData;
FAFontConfig->FontDataSize = FontAwesomeSize;
FAFontConfig->SizePixels = /* 指定字体大小 */;
// ...其他配置...
}
4. 典型生态项目
Unreal ImGui 作为一个插件,可以与 Unreal Engine 的其他开源项目配合使用,例如:
- 使用 ImGui 创建游戏内调试工具。
- 集成 ImPlot 用于实时数据可视化。
- 利用 ImGui 提供的图表库进行性能监控。
通过上述介绍,您可以开始使用 Unreal ImGui 来丰富您的虚幻引擎项目,并探索更多可能性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考