- Editor CMakeLists.txt 链接 XCEngine 库 - 删除 editor/src/Core/GameObject.h (简化版) - SelectionManager 使用 Engine::Components::GameObject* - SceneManager 使用 Engine::Scene - HierarchyPanel 使用 Engine GameObject API - InspectorPanel 使用 Engine TransformComponent 注意: Engine RHI Shader 接口有编译错误需要修复
UI Editor
Unity 风格的编辑器 UI,使用 ImGui 实现,作为 XCEngine 游戏引擎编辑器的一部分。
简介
XCGameEngine UI 是一个仿 Unity 编辑器的桌面应用程序,提供场景管理、层级视图、属性检查器等功能。
技术栈
- 渲染 API: DirectX 12
- UI 框架: ImGui
- 语言: C++17
- 构建系统: CMake
- 依赖库: DirectX 12 SDK
项目结构
ui/
├── src/
│ ├── main.cpp # 程序入口
│ ├── Application.cpp/h # 应用主类
│ ├── Theme.cpp/h # 主题系统
│ ├── Core/
│ │ ├── GameObject.h # 游戏对象
│ │ └── LogEntry.h # 日志条目
│ ├── Managers/
│ │ ├── LogSystem.cpp/h # 日志系统
│ │ ├── ProjectManager.cpp/h # 项目管理
│ │ ├── SceneManager.cpp/h # 场景管理
│ │ └── SelectionManager.cpp/h # 选择管理
│ └── panels/
│ ├── Panel.cpp/h # 面板基类
│ ├── MenuBar.cpp/h # 菜单栏
│ ├── HierarchyPanel.cpp/h # 层级面板
│ ├── InspectorPanel.cpp/h # 检查器面板
│ ├── SceneViewPanel.cpp/h # 场景视图
│ ├── GameViewPanel.cpp/h # 游戏视图
│ ├── ProjectPanel.cpp/h # 项目面板
│ └── ConsolePanel.cpp/h # 控制台面板
├── bin/Release/ # 输出目录
│ ├── XCVolumeRendererUI2.exe # 可执行文件
│ ├── imgui.ini # ImGui 配置
│ └── Assets/
│ └── Models/
│ └── Character.fbx # 示例模型
├── build/ # 构建目录
└── CMakeLists.txt # CMake 配置
构建方法
前置要求
- Windows 10/11
- Visual Studio 2019 或更高版本
- CMake 3.15+
构建步骤
cd ui
mkdir build && cd build
cmake ..
cmake --build . --config Release
运行
# 运行编译好的可执行文件
.\bin\Release\XCGameEngineUI.exe
功能特性
编辑器面板
菜单栏(MenuBar)
- 文件菜单(新建、打开、保存等)
- 编辑菜单(撤销、重做等)
- 视图菜单(面板显示/隐藏)
- 帮助菜单
层级面板(Hierarchy Panel)
- 显示场景中所有游戏对象
- 树形结构展示父子关系
- 支持对象选择
- 对象重命名
检查器面板(Inspector Panel)
- 显示选中对象的属性
- 支持组件编辑
- 变换组件(位置、旋转、缩放)
- 材质组件
场景视图(Scene View)
- 3D 场景预览
- 相机控制(平移、旋转、缩放)
- 对象选择
- 辅助工具(网格、轴心)
游戏视图(Game View)
- 游戏运行时的画面预览
- 分辨率设置
- 宽高比选择
项目面板(Project Panel)
- 项目文件浏览器
- 资源组织
- 搜索过滤
控制台面板(Console Panel)
- 日志输出
- 警告和错误显示
- 日志级别过滤
- 清空日志
管理系统
日志系统(LogSystem)
- 分级日志(Info、Warning、Error)
- 时间戳
- 日志持久化
项目管理(ProjectManager)
- 项目创建/打开
- 资源路径管理
场景管理(SceneManager)
- 场景加载/保存
- 对象生命周期管理
选择管理(SelectionManager)
- 当前选中对象追踪
- 多选支持
主题系统
- 深色主题(Dark Theme)
- 可自定义配色方案
窗口布局
默认布局采用经典的 Unity 编辑器风格:
+----------------------------------------------------------+
| 菜单栏 |
+----------+------------------------+----------------------+
| | | |
| 项目 | 场景视图 | 检查器 |
| 面板 | | |
| | | |
+----------+------------------------+----------------------+
| 层级面板 | 游戏视图 |
| | |
+------------------------------------+----------------------+
| 控制台面板 |
+----------------------------------------------------------+
依赖说明
- ImGui - 跨平台 GUI 库
- DirectX 12 - 渲染 API
- Windows SDK - 窗口管理
扩展开发
添加新面板
- 在
panels/目录下创建新的面板类 - 继承
Panel基类 - 实现
Render()方法 - 在
Application中注册新面板
添加新组件
- 定义组件类
- 在
GameObject中注册组件类型 - 在
InspectorPanel中添加属性编辑器