首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
逆向工程
发新帖
2
1
[分享]Unreal Engine 学习(ShooterGame)
发表于: 2026-3-10 13:00
2224
[分享]Unreal Engine 学习(ShooterGame)
mb_binusgki
2026-3-10 13:00
2224
# 前言 Unreal Engine(简称 UE)是由 Epic Games 开发的一款大型 实时3D游戏引擎。它主要用于开发 游戏、电影、虚拟现实(VR)、建筑可视化、仿真系统 等。 代表性游戏有: - PUBG: Battlegrounds(绝地求生) - Delta Force: Hawk Ops(三角洲行动) 使用的引擎版本都是UE4 但UE4框架十分庞大(代码大概1500万行),如选择浏览完整个项目不现实,所以笔者选择通过 ShooterGame (一款官方经典示例demo)来入门学习UE4   # 1. 确定结构核心 UE4 通常结构如下: ``` UnrealEngine/ ├─ Engine ├─ Samples ├─ Templates ├─ FeaturePacks ├─ Setup.bat ├─ GenerateProjectFiles.bat └─ UE4.sln ``` 其中 UE4 所有引擎代码都在 Engine 目录下,真正的源码主要在 Engine/Source 而在 Source 中,Runtime 又是最核心的部分 ``` Runtime/ ├─ Core ├─ CoreUObject ├─ Engine ├─ RenderCore ├─ RHI ├─ InputCore ├─ Slate ├─ SlateCore ├─ Networking └─ PhysicsCore ``` 本文将会重点围绕此处展开 # 逻辑核心类 在 UE4 中几乎所有游戏逻辑都围绕几个核心类: ``` UGameInstance ↓ UWorld ↓ AActor ↓ APawn ↓ ACharacter ``` **例如:** 要获取人物坐标:看看ShooterGame是怎么做的:  这里为要获取AI的位置,由AShooterBot调用了GetActorLocation(),而GetActorLocation()的结果结构为在FVector中:一进来就可以看到x、y、z坐标,结构十分清晰  继续跟着AShooterBot,发现其继承了AShooterCharacter,继续跟踪  继续继承ACharacter,继续跟踪  ACharacter继承了APawn  APawn又继承了AActor和INavAgentInterface  AActor继承了UObject  UObject继承了UObjectBaseUtility  UObjectBaseUtility继承了UObjectBase  而UObjectBase为UE对象系统最底层的基类之一  另外INavAgentInterface也为导航系统接口(给AI寻路用)  大致层级关系为: ``` UObjectBase(最底层对象) ↓ UObjectBaseUtility ↓ UObject ↓ AActor ↓ APawn ↓ ACharacter ↓ AShooterCharacter ↓ AShooterBot ``` # 解析 ## 1 UObjectBase(最底层对象) UObjectBase 是 UE 对象系统的最底层类。它只做最基础的事情: - 对象ID - 对象类型 - 对象标志 - 对象注册 ## 2 UObjectBaseUtility 作用为:提供对象操作工具函数 例如:判断对象是不是某个类 ## 3 UObject(UE对象系统核心) 这是UE反射系统的核心类 提供:反射系统、GC垃圾回收、自动管理对象、序列化、存档加载、对象查找、对象创建等底层核心功能 ## 4 AActor(世界中的对象) Actor 是世界中的实体。 例如:、类型、角色、物体、子弹、灯光、位置坐标等等  ## 5 APawn(可被控制的Actor) Pawn = 可被控制的Actor 例如:玩家角色、AI角色、载具、飞机等等  可以看到设置获取玩家状态等方法,还有非常多功能  ## 6 ACharacter(带骨骼的Pawn) Character专门用于人形角色 提供:碰撞、移动系统、骨骼模型等功能 其中UCharacterMovementComponent提供:走、跑、跳、下蹲、游泳、飞行等操作  在UCharacterMovementComponent中能看到相应的移动控制项(非常多)  ## 7 AShooterCharacter(ShooterGame玩家) 这是ShooterGame自定义拓展的功能 不属于ue4 作用实现:FPS玩家角色 提供功能:、武器系统、射击、换弹、血量、死亡等等   ## 8 AShooterBot 这是ShooterGame自定义拓展的功能 不属于ue4 例如:AI敌人、敌人NPC、机器人等 # 总结 本篇博客为笔者学习记录,如有错漏请留言,欢迎讨论
传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!
#调试逆向
#系统底层
#问题讨论
#其他内容
收藏
・
2
点赞
・
1
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
xxRea
你的帖子非常有用,感谢分享!
2026-3-17 16:57
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
0
)
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
mb_binusgki
29
发帖
6
回帖
0
RANK
关注
私信
他的文章
[分享]注册表回调内核通信
379
[分享]简单编译器实现
1869
[分享]Lexer简单词法解析器入门
1233
[分享]vm解释器入门2
1288
[分享]vm解释器入门
1587
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部