斯坦福UE4 + C++课程学习记录 12:Debug入门

本文详细介绍了在UE4中使用C++进行游戏开发时的Debug技巧,包括更新炸药桶逻辑、输出调试信息、使用断点以及使用断言。通过实例演示了如何设置和使用这些Debug工具,以提升开发效率和代码质量。
摘要由CSDN通过智能技术生成

目录

1. 更新炸药桶

2. 输出调试信息

3. 使用断点

4. 使用断言

5. 完整代码


        课程中首先提到了一个重要的点,就是尽量不要使用UE的热重载,即修改保存C++代码后不关闭UE直接使用它的编译功能。因为这个功能不太稳定,比较容易出Bug,就算UE提示编译完成也有几率出错(我自己也遇到过,还因为这个bug反复排查自己的代码...)。所以,在修改C++代码后尽量选择关闭UE,再在VS中使用编译打开UE,这样可以尽可能确保代码生效。

        这节会在之前第6节实现的炸药桶基础上,展示一些在UE中Debug的技巧。

1. 更新炸药桶

        在之前的第6节,我们已经实现了炸药桶受击后发出冲击力的效果。但在上一节的内容中,我们更改了魔法粒子的蓝图,修改了自定义碰撞预设Projectile的配置,导致现在的炸药桶不能再被魔法粒子触发了。因此,在开始Debug相关的内容前,我们需要对炸药桶进行一些改变。

        之所以炸药桶不爆炸,是因为没有执行SurExplosiveBarrel.cpp中的OnActorHit函数。在第6节的内容中我提到“暂时没有理解代码中OnActorHit()的调用方式,待以后补充”,所以刚好在这个地方学习一下。

        在官方文档中对这个函数的说明略少,因此从课程提供的项目源码入手。在仔细阅读了课程提供的源码后,我得知OnActorHit函数是以“组件命中时(OnComponentHit)”事件的形式被UE自动调用的(UE蓝图中已经有OnComponentHit这个事件节点了,代码中传入的一大堆输入其实也是这个节点的引脚)。所以,我们在C++中编写的函数需要绑定到这个事件上才能生效。在之前第6节进行实现时,我复制了完整的课程源码并运行成功,但出于精简知识点的目的,我一边热重载一边删除其中的代码,在当时项目也的确正常运行了,不知道这是不是UE热重载的bug...

        在补充了绑定事件的代码后,炸药桶可以成功被魔法粒子触发了,完整代码见末尾。这里要注意,打开炸药桶的“模拟物理”,否则炸药桶会在原地一动不动;关闭炸药桶的“模拟生成命中事件”,否则炸药桶一落地就自动爆炸,如图12-1:

图12-1 开启“模拟生成命中事件”

2. 输出调试信息

        这部分将介绍几个在UE开发中输出调试信息的方法,方便日后我们开发时的debug工作。

        首先,使用日志是各种计算机开发都必不可少的环节,在UE中可以使用UE_LOG来输出日志。课程给出了英文的wiki,其中对日志做了比较详细的介绍。示例用法如下:

UE_LOG(LogTemp, Log, TEXT("OtherActor is %s, at game time %f"), *GetNameSafe(OtherAc
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Surkea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值