问题描述
我在虚幻引擎4中有一个项目,并且正在Visual Studio 2019中调试游戏代码。在某些情况下会遇到断点,但我认为代码并未真正执行。你能告诉我这怎么可能吗?
1 void UTrace::DrawDebug()
2 {
3 for (TPair<Vector2DTuple,int> edge : EdgesMap)
4 {
5 Vector2DTuple vertices = edge.Key;
6 FVector source = FVector(*vertices.Key,0.f);
7 FVector target = FVector(*vertices.Value,0.f);
8
9 DrawDebugLine(GetWorld(),source,target,FColor::Black,false,-1.f,-1,3.f);
10 UE_LOG(LogTemp,Warning,TEXT("%f %f %f"),source.X,source.Y,source.Z);
11 UE_LOG(LogTemp,target.X,target.Y,target.Z);
12 UE_LOG(LogTemp,TEXT("-------"));
13 }
14 }
我在第9行和第11行有一个断点。在游戏模式运行时中,在EdgesMap中填充了某些元素后,第9行的断点被击中。 此时,变量似乎尚未初始化。
然后按F5键继续执行程序,然后在第9行(而不是我认为的第11行)再次命中断点。并且其中一个已初始化变量,另一个未初始化。
然后继续执行程序,并在第9行再次击中断点,到目前为止,尚未执行任何UE_LOG。
此后,我继续执行程序,最后找到第11行的断点,并在控制台中以正确初始化的变量(x = 150,y = 650)登录了一个。>
问题:
观察:
- 此奇怪的断点仅出现在具有第一个Draw Debug方法的行上。如果我在上面的几行中放一个不同的电话,则不会发生在前一个电话中。
- EdgesMap集合仅包含一个元素(因此,对于一个DrawDebug调用,循环只有一个迭代)
- 仅从onTick方法中调用DrawDebug方法(不是从某些构造方法中调用)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)