StoneのBLOG

生活这种事情,从来都是自我陶醉

0%

UE4-DebugDraw记录

UE4本身提供了很多方便Debug的显示功能,在这里做一些使用记录。

Overview

UKismetSystemLibrary::DrawDebug系列

UKismetSystemLibrary::DrawDebug这个函数库里面提供了很多开箱即用的函数,很方便也是使用频度很高的功能。

DrawDebugSphere

使用方法(复制粘贴过来的):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "Runtime/Engine/Classes/Kismet/GameplayStatics.h"
#include "Runtime/Engine/Classes/Kismet/KismetSystemLibrary.h"

// 適当なアクターに実装
void AMyPawn::Tick( float DeltaTime )
{
Super::Tick( DeltaTime );

// 2.5 秒ごとに表示を on/off する細工
static float tt = 0;
tt = FMath::Fmod( tt + DeltaTime, 5.0f );
if ( tt < 2.5f )
{
// アクターの位置に赤い球を描画
UKismetSystemLibrary::DrawDebugSphere( GetWorld(), GetActorLocation(), 100.0f, 12, FLinearColor::Red, 0.0f, 3.0f );
// プレイヤーの位置を取得(本題と直接は関係しない)
auto l0 = UGameplayStatics::GetPlayerPawn( GetWorld(), 0 )->GetActorLocation();
// プレイヤーの位置からこのアクターの位置へ黄色の矢印を描画
UKismetSystemLibrary::DrawDebugArrow( GetWorld(), l0, GetActorLocation(), 100.0f, FLinearColor::Yellow, 0, 3.0f );
}
}

// プレイヤーのアクターに実装
void TestCharacter::Tick( float DeltaTime )
{
Super::Tick( DeltaTime );

// プレイヤーの位置に "PLAYER[0]" を緑色で描画
UKismetSystemLibrary::DrawDebugString( GetWorld(), GetActorLocation(), TEXT( "PLAYER[0]" ), nullptr, FLinearColor::Green, 0 );
}

Debug HUD系列

之前有碰见过很有趣的HUD,就是DebugCamera用的HUD表示,感觉很适合常驻表示一些信息,有时间可以总结一下。