Files
XCEngine/editor
ssdfasd 9fae910854 Editor: 更新编辑器面板和UI控件系统
- 添加新的UI控件系统(Core.h, ScalarControls.h, VectorControls.h, UI.h)
- 更新SceneManager支持场景层级管理
- 优化SelectionManager选择管理
- 改进InspectorPanel/GameViewPanel/HierarchyPanel等面板
- 更新RHI文档说明Vulkan实现计划
2026-03-24 20:02:38 +08:00
..

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 - 窗口管理

扩展开发

添加新面板

  1. panels/ 目录下创建新的面板类
  2. 继承 Panel 基类
  3. 实现 Render() 方法
  4. Application 中注册新面板

添加新组件

  1. 定义组件类
  2. GameObject 中注册组件类型
  3. InspectorPanel 中添加属性编辑器