vs无法调试_用Launcher引擎调试UE4源码的方法

748e763dab0f5f0fe28576b9cbdd9260.png

1 编译源码的缺点

要学习引擎源码,通过断点调试是一个好办法,一般这个时候都会想到去GitHub下载源码自己编译[1]。可是下载源码自己编译也有一些不方便的地方,比如:

  1. 因为网络问题,从GitHub上下载源码速度很慢
  2. 下完源码还要下载依赖项目,又是看网速的步骤
  3. 如果设备性能普通,编译全部引擎源码要消耗大量的时间
  4. 源码编译完会占用大量的磁盘空间,一个引擎至少要留100GB空间
  5. 使用过程如果误操作点了重新编译,又是一大块时间没了

总结一下就是:编译源码太费时间了!

如果只是想学习虚幻4的源码,并不想修改引擎源码,那有没有什么更快的办法呢?

2 编辑器模式调试源码

还好EpicGamesLauncher[2]里有提供引擎源码和调试符号下载

ab5969b8ddd60a707103c1d1cb8cbbf3.png

下载好引擎源码和调试符号以后,新建一个项目,创建一个C++类

7b3477683482d2e464db2bcf52c918a5.png

把刚才创建的Actor拖拽到场景中,然后保存地图

cffe3d155eab852d8cb3f4b91a04092a.png

设置项目的启动地图

7103ac0b0b299c6c7e6c20c534d79c2f.png

然后打开VS,加断点,启动项目

c8a483615b680f1e547ee2ff521dcf54.png

启动编辑器后,点击按钮运行游戏,触发断点就能看到调用堆栈了

7fc277764cfe6e2249285d3970d2b15d.png

从调用堆栈(Call Stack)中,可以看到编辑器模式的运行流程是

WinMain 
-> GuardedMain 
-> FEngineLoop::Tick 
-> UUnrealEdEngine::Tick
-> ...
-> UEditorEngine::PlayInEditor
-> ... 
-> UWorld::BeginPlay 
-> AMyActor::BeginPlay

3 游戏模式调试源码

编辑器模式运行和游戏模式运行还是有点区别的,那要怎么调试游戏模式呢?

首先要烘焙资源[3](把引擎使用的资源格式,转换成特定平台的格式)

10eb59370b15fa2cb810a527d62d9a7e.png

如果游戏运行后出现了下面这个提示窗口,原因就是没有烘焙资源

b41fed975d91fd62432254d15f500fc9.png

资源烘焙完成后,关闭编辑器打开VS,在项目启动参数里增加" -game"(注意有空格)

"$(SolutionDir)$(ProjectName).uproject" -skipcompile -game 

bc473cff4cd86a0ae7aac6b24c1ec650.png

这样做的原因是launcher引擎的编译配置[4]里,DebugGame、Development、Shipping这三种模式只能调试自己写的代码,无法调试引擎源码

fb98b7bb55b40c589ec2491379581888.png

加完 " -game"参数后,运行游戏触发断点

4dd470d3534c0b0eebab96bb9ca6e800.png

游戏模式和编辑器模式的启动流程是不一样的,可以看到游戏模式的运行流程是

WinMain
-> GuardedMain
-> FEngineLoop::Init
-> UGameInstance::StartGameInstance
-> UEngine::Browse
-> UEngine::LoadMap
-> UWorld::BeginPlay
-> ...
-> AMyActor::BeginPlay

参考

  1. ^下载虚幻引擎源代码 https://docs.unrealengine.com/zh-CN/GettingStarted/DownloadingUnrealEngine/index.html
  2. ^安装虚幻引擎 https://docs.unrealengine.com/zh-CN/GettingStarted/Installation/index.html
  3. ^内容烘焙 https://docs.unrealengine.com/zh-CN/Engine/Deployment/Cooking/index.html
  4. ^ 编译配置参考 https://docs.unrealengine.com/zh-CN/Programming/Development/BuildConfigurations/index.html
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值