Unreal Engine
- Action System(行动系统)2026-02-16
Action System(行动系统)
概述
Action System 是本项目的核心技能/能力框架,类似于 UE 官方的 Gameplay Ability System (GAS),但更加轻量且易于理解。它负责管理角色的所有行动(技能、Buff/Debuff、被动效果等)以及属性系统(生命值、攻击力等)。
核心类
URogueAction
文件:
Source/ActionRoguelike/ActionSystem/RogueAction.h/.cppAction 是所有行动的基类,继承自
UObject。每个 Action 代表一个可执行的行动,如攻击、冲刺、Sprint 等。 - ActionRoguelike 项目入门指南2026-02-16
ActionRoguelike 项目入门指南
项目简介
ActionRoguelike 是一个基于 Unreal Engine 的 C++ 第三人称动作 Roguelike 游戏项目。项目展示了从自定义技能系统、AI 行为、网络复制到性能优化等多种 UE 开发技术。
快速导航
文档 内容 适合阅读时机 01-ActionSystem 技能/属性框架 最先阅读 - 项目核心 02-AI AI 角色与行为树 了解 Action System 后 03-Player 玩家角色与输入 了解 Action System 后 04-Projectiles 弹体系统 了解 Action 和 Player 后 05-Pickups 拾取物系统 随时 06-World 世界交互物 随时 07-SaveSystem 存档系统 随时 08-Performance 性能优化 有一定基础后 09-Core 核心框架与全局工具 需要查阅时 10-Animation 动画系统 随时 11-UI UI 系统 随时 12-StateTrees State Tree 任务 有一定基础后 13-Development 开发与调试工具 需要调试时 推荐阅读顺序
如果你是刚接触这个项目的新手,建议按照以下路径阅读:
- AI 系统2026-02-16
AI 系统
概述
AI 系统负责管理游戏中的敌方角色(怪物),包括角色定义、AI 控制器、行为树节点以及 AI 专用的 Action。系统使用 UE 的行为树(Behavior Tree)、感知系统(AI Perception)和环境查询系统(EQS)实现智能 AI 行为。
核心类
ARogueAICharacter
文件:
Source/ActionRoguelike/AI/RogueAICharacter.h/.cpp - State Trees(状态树系统)2026-02-16
State Trees(状态树系统)
概述
State Trees 模块提供基于 UE State Tree 框架的 AI Director 任务,用于替代或补充行为树实现更高层次的游戏逻辑控制,如怪物选择和生成策略。
核心类
FRogueStateTreeDirectorTask
文件:
Source/ActionRoguelike/StateTrees/RogueStateTreeTasks.h/.cppState Tree 任务的基类,标记为
Hidden不直接在编辑器中显示。所有自定义 Director 任务继承此类。FRogueSTTask_SelectMonster
文件:
Source/ActionRoguelike/StateTrees/RogueStateTreeTasks.h/.cpp从 DataTable 中选择要生成的怪物的 State Tree 任务。
- UI 系统2026-02-16
UI 系统
概述
UI 系统提供 HUD、世界空间 Widget 和效果图标 Widget。核心设计是将世界空间 UI 统一添加到主 HUD 的 CanvasPanel 中,通过手动投影世界坐标到屏幕坐标实现位置跟踪。
核心类
ARogueHUD
文件:
Source/ActionRoguelike/UI/RogueHUD.h/.cppHUD 类,管理暂停菜单。
暂停菜单:
TogglePauseMenu()- 切换暂停菜单显示- 显示时:创建 Widget、显示鼠标、切换到 UI 输入模式
- 隐藏时:移除 Widget、隐藏鼠标、恢复游戏输入
- 仅在单机模式(
NM_Standalone)下实际暂停游戏 - Widget 添加到 Viewport 的 ZOrder=100 确保在最顶层
URogueWorldUserWidget
文件:
Source/ActionRoguelike/UI/RogueWorldUserWidget.h/.cpp - 存档系统2026-02-16
存档系统
概述
存档系统负责游戏状态的保存和加载,包括玩家数据(Credits、个人记录、位置)和世界 Actor 状态(宝箱开启状态等)。使用 UE 的 SaveGame 框架,通过 GameInstance Subsystem 实现跨关卡持久化。
核心类
URogueSaveGameSubsystem
文件:
Source/ActionRoguelike/SaveSystem/RogueSaveGameSubsystem.h/.cpp保存/加载的核心子系统,继承
UGameInstanceSubsystem(随 GameInstance 生命周期存在)。 - 弹体系统2026-02-16
弹体系统
概述
弹体系统提供了两套实现方案:传统的 Actor 弹体和实验性的数据导向弹体。Actor 弹体方案更成熟,集成了对象池、聚合 Tick 等优化;数据导向方案通过 WorldSubsystem 管理无 Actor 的轻量级弹体数据,是一种性能探索。
Actor 弹体方案
ARogueProjectile(弹体基类)
文件:
Source/ActionRoguelike/Projectiles/RogueProjectile.h/.cpp所有 Actor 弹体的抽象基类,实现
IRogueActorPoolingInterface支持对象池。组件:
- 动画系统2026-02-16
动画系统
概述
动画模块包含自定义动画实例、近战检测的动画通知以及轻量级的曲线动画子系统。
核心类
URogueAnimInstance
文件:
Source/ActionRoguelike/Animation/RogueAnimInstance.h/.cpp自定义动画实例基类。
特性:
- 自动获取 ActionComponent 引用
- 每帧检查
Status.StunnedTag 更新bIsStunned(供动画蓝图使用) - 提供
OnMeleeOverlap委托,近战 AnimNotify 通过此委托通知 Action
脚步音效: 重写
HandleNotify()拦截脚步动画通知(l_foot_plant/r_foot_plant),播放配置的脚步音效。 - 核心框架2026-02-16
核心框架
概述
核心框架包含游戏的基础架构类:GameMode、GameState、全局函数库、接口定义、共享 GameplayTag 以及各种配置/设置类。
GameMode
ARogueGameModeBase
文件:
Source/ActionRoguelike/Core/RogueGameModeBase.h/.cpp游戏模式基类,管理游戏规则、怪物生成和道具布局。
默认类配置:
- PlayerStateClass →
ARoguePlayerState - HUDClass →
ARogueHUD - GameStateClass →
ARogueGameState
怪物生成系统: 使用积分制(Credit-based)控制怪物生成难度:
- PlayerStateClass →
- 开发工具2026-02-16
开发工具
概述
开发工具模块提供作弊管理器和本地开发者设置,方便在开发阶段快速调试和测试。
核心类
URogueCheatManager
文件:
Source/ActionRoguelike/Development/RogueCheatManager.h/.cpp自定义作弊管理器,通过控制台命令触发。在
ARoguePlayerController中配置为CheatClass。Exec 命令:
HealSelf- 完全恢复自身生命值(ApplyAttributeChange 设置 Health 为 HealthMax)KillAll- 杀死所有指定类的 AI 角色(默认ARogueAICharacter)DeleteSaveGame- 删除指定槽位的存档文件
使用方式: 在游戏运行时打开控制台(
~键)输入命令名即可。 - 世界交互物2026-02-16
世界交互物
概述
世界交互物模块包含关卡中的各种可交互和可互动的 Actor,如宝箱、爆炸桶和靶子。这些物体展示了如何使用 ActionComponent 属性系统、交互接口和曲线动画。
核心类
ARogueTreasureChest(宝箱)
文件:
Source/ActionRoguelike/World/RogueTreasureChest.h/.cpp可交互的宝箱,实现
IRogueGameplayInterface。组件:
UStaticMeshComponent(BaseMesh) - 箱体,启用物理模拟UStaticMeshComponent(LidMesh) - 箱盖,附加到箱体UNiagaraComponent(OpenChestEffect) - 开启粒子效果(bAutoManageAttachment)UAudioComponent(OpenChestSound) - 开启音效(bAutoManageAttachment)
交互流程:
- 拾取物系统2026-02-16
拾取物系统
概述
拾取物系统包含两套方案:基于 Actor 的传统拾取物和基于 WorldSubsystem 的数据导向拾取物。前者适合需要交互的物品(如药水、能力拾取),后者适合大量轻量级拾取物(如金币)。
Actor 拾取物方案
ARoguePickupActor(拾取物基类)
文件:
Source/ActionRoguelike/Pickups/RoguePickupActor.h/.cpp所有可拾取物品的抽象基类,实现
IRogueGameplayInterface交互接口。组件:
USphereComponent- 碰撞检测UStaticMeshComponent- 外观显示
核心机制:
- 玩家系统2026-02-16
玩家系统
概述
玩家系统负责处理玩家角色的控制、输入、技能触发、交互和状态管理。采用 Enhanced Input 系统处理输入,使用 Data Asset 配置输入映射,支持键鼠和手柄操作。
核心类
ARoguePlayerCharacter
文件:
Source/ActionRoguelike/Player/RoguePlayerCharacter.h/.cpp玩家角色基类(Abstract),继承自
ACharacter,实现IGenericTeamAgentInterface和IRogueActionSystemInterface。组件:
USpringArmComponent+UCameraComponent- 第三人称摄像机URogueActionComponent- 技能和属性管理(使用URogueSurvivorAttributeSet)UAIPerceptionStimuliSourceComponent- 让 AI 能够感知到玩家UAudioComponent(AttackSoundsComp) - 攻击音效,使用bAutoManageAttachment优化
输入系统: 使用 Enhanced Input,所有输入绑定通过
URoguePlayerDataData Asset 配置: - 性能优化系统2026-02-16
性能优化系统
概述
性能优化模块包含多个子系统和机制,旨在减少 CPU 开销、改善帧率稳定性:
- Actor 对象池 - 避免频繁的 Spawn/Destroy
- Significance Manager - 基于距离的 LOD 和功能降级
- Tick 聚合 - 减少 Tick 调度开销
- Deferred Task System - 帧预算管理
- 尸体管理 - 控制同屏尸体数量
Actor 对象池
URogueActorPoolingSubsystem
文件:
Source/ActionRoguelike/Performance/RogueActorPoolingSubsystem.h/.cpp世界子系统,管理 Actor 的复用池。默认通过 CVar
game.ActorPooling控制开关。