# 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+ ### 构建步骤 ```bash cd ui mkdir build && cd build cmake .. cmake --build . --config Release ``` ### 运行 ```bash # 运行编译好的可执行文件 .\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 - 窗口管理 ## 扩展开发 ### 添加新面板 1. 在 `panels/` 目录下创建新的面板类 2. 继承 `Panel` 基类 3. 实现 `Render()` 方法 4. 在 `Application` 中注册新面板 ### 添加新组件 1. 定义组件类 2. 在 `GameObject` 中注册组件类型 3. 在 `InspectorPanel` 中添加属性编辑器