UE核心架构概念
核心概念概览
| 概念 | 英文 | 作用/特点 | 网络相关 |
|---|---|---|---|
| GameInstance | GameInstance | 全局对象,跨关卡存在,管理 Session/玩家信息/存档 | 不自动复制;Run on Server 可通过 PlayerController 发起 |
| GameMode | GameMode | 只在 Server 上存在,管理游戏规则、胜负条件、Spawn | Server 权威,客户端没有实例 |
| GameState | GameState | 所有客户端都有,存储游戏状态(比分、时间等共享信息) | 会复制到客户端(Replicate) |
| PlayerController | PlayerController | 控制玩家输入和 UI,客户端和 Server 都有实例 | Server 版本有 Authority,可以操作 GameMode、Session |
| PlayerState | PlayerState | 存储玩家相关状态(名字、分数、生命值) | 会复制给客户端,适合显示在 UI 上 |
| Pawn / Character | Pawn/Character | 玩家实体或 AI,客户端和服务器都有实例 | 复制位置/动作/变量可选,控制移动/攻击 |
| Actor | Actor | 基础物体类,关卡里所有对象都是 Actor 或子类 | 可设置 Replicate,决定是否同步到客户端 |
| Level / Level Blueprint | Level | 场景地图,关卡蓝图控制关卡事件 | Level Blueprint 默认是本地,不复制,通常做本地逻辑 |
| Subsystem | Subsystem | 类似模块化系统,分为 Engine / GameInstance / LocalPlayer | 可管理全局功能(比如 OnlineSubsystem) |
1️⃣ GameInstance
类名:
UGameInstance路径:
Engine/Source/Runtime/Engine/Classes/Engine/GameInstance.h实现:
Engine/Source/Runtime/Engine/Private/GameInstance.cpp关键点:
Init():游戏启动初始化StartGameInstance():创建子系统、加载地图前调用可以管理 OnlineSubsystem、Session、全局数据
2️⃣ GameMode / GameModeBase
类名:
AGameModeBase(基础类,不包含 PlayerController 生成逻辑)AGameMode(常用,继承自 GameModeBase,处理玩家生成、规则等)
路径:
Engine/Source/Runtime/Engine/Classes/GameFramework/GameModeBase.hEngine/Source/Runtime/Engine/Private/GameModeBase.cpp同理
GameMode.h/cpp
关键点:
StartPlay():关卡开始执行的入口HandleMatchHasStarted()、HandleMatchHasEnded():比赛逻辑
3️⃣ GameState / GameStateBase
类名:
AGameStateBase/AGameState
路径:
Engine/Source/Runtime/Engine/Classes/GameFramework/GameStateBase.hEngine/Source/Runtime/Engine/Private/GameStateBase.cpp
关键点:
存储全局游戏状态,自动复制给客户端
Replicated属性、OnRep_回调函数是核心
4️⃣ PlayerController
类名:
APlayerController路径:
Engine/Source/Runtime/Engine/Classes/GameFramework/PlayerController.hEngine/Source/Runtime/Engine/Private/PlayerController.cpp
关键点:
网络事件的桥梁:Run on Server / Multicast / Client
管理玩家输入、UI、Pawn Possess
5️⃣ PlayerState
类名:
APlayerState路径:
Engine/Source/Runtime/Engine/Classes/GameFramework/PlayerState.hEngine/Source/Runtime/Engine/Private/PlayerState.cpp
关键点:
存储玩家分数、名字、状态
自动复制给客户端,用于 HUD 显示
6️⃣ Pawn / Character
类名:
APawn→ACharacter→ACharacterMovementComponent
路径:
Engine/Source/Runtime/Engine/Classes/GameFramework/Pawn.hEngine/Source/Runtime/Engine/Classes/GameFramework/Character.h
关键点:
MovementComponent 管理移动和物理
Replication 逻辑在
PawnMovementComponent和CharacterMovementComponentPossessedBy()/UnPossessed()与 PlayerController 绑定
7️⃣ Actor / Replication
类名:
AActor路径:
Engine/Source/Runtime/Engine/Classes/GameFramework/Actor.hEngine/Source/Runtime/Engine/Private/Actor.cpp
关键点:
SetReplicates(true)开启复制GetLifetimeReplicatedProps()定义哪些变量复制IsNetMode(NM_Client/Server)判断 Authority
8️⃣ OnlineSubsystem / Session
类名:
IOnlineSubsystemIOnlineSession
路径:
Engine/Source/Runtime/Online/OnlineSubsystem/Public/OnlineSubsystem.hEngine/Source/Runtime/Online/OnlineSubsystem/Public/Interfaces/OnlineSessionInterface.h
关键点:
管理 Session、玩家匹配、Steam/Null 等接口
Create/Find/Join Session 都在
IOnlineSession
🔹 建议学习顺序
先从 GameInstance → GameMode → GameState,理解全局和规则管理
再看 PlayerController + Pawn/Character,理解玩家输入和网络权威
最后看 Actor + Replication + OnlineSubsystem,理解网络复制和联机机制
