Useful snippets for some UE4 tasks.
draw_center.cppHow to draw actor centerget_actor.cppHow to get an actor using its iddraw_debug_3d.cppHow to draw 3D debug points
| FString | |
| FName | |
| // How to convert between them |
| for (TActorIterator<AActor> ActorItr(World); ActorItr; ++ActorItr) | |
| { | |
| AActor* Actor = *ActorItr; | |
| FVector WorldLocation = Actor->GetActorLocation(); | |
| FVector2D ScreenLocation; | |
| APlayerController* PlayerController = World->GetFirstPlayerController(); | |
| PlayerController->ProjectWorldLocationToScreen(WorldLocation, ScreenLocation); | |
| // AHUD *HUD = UGameplayStatics::GetPlayerController(Player, 0)->GetHUD(); | |
| AHUD *HUD = PlayerController->GetHUD(); | |
| // Check if this position is occluded, if yes, mark it with a different color. | |
| FVector Start = PlayerPawn->GetActorLocation(); | |
| FVector End = Actor->GetActorLocation(); | |
| FHitResult HitResult; | |
| // World->LineTraceSingleByChannel(HitResult, Start, End, ECollisionChannel::ECC_Pawn); | |
| FCollisionObjectQueryParams ObjectQueryParams(FCollisionObjectQueryParams::AllObjects); | |
| FCollisionQueryParams QueryParams = FCollisionQueryParams::DefaultQueryParam; | |
| QueryParams.AddIgnoredActor(PlayerPawn); | |
| World->LineTraceSingleByObjectType(HitResult, Start, End, ObjectQueryParams, QueryParams); | |
| if (HitResult.GetActor() == Actor) | |
| { | |
| HUD->DrawRect(FLinearColor::Green, ScreenLocation.X, ScreenLocation.Y, 5, 5); | |
| } | |
| else | |
| { | |
| AActor* HitActor = HitResult.GetActor(); | |
| HUD->DrawRect(FLinearColor::Red, ScreenLocation.X, ScreenLocation.Y, 5, 5); | |
| } | |
| } |
| #include "DrawDebugHelpers.h" // This is written by Rama and include in UE4 officially now | |
| // The wiki page for this helper file is [here](https://wiki.unrealengine.com/Draw_3D_Debug_Points,_Lines,_and_Spheres:_Visualize_Your_Algorithm_in_Action) | |
| DrawDebugPoint(World, ActorLocation + Keypoint, 10, FColor::Red, true, 10); |
| FString ModelId = TEXT(""); | |
| UWorld* World = ; | |
| for (TActorIterator<AActor> ActorItr(World); ActorItr; ++ActorItr) | |
| { | |
| AActor* Actor = *ActorItr; | |
| if (Actor->GetName() == ModelId) | |
| { | |
| break; | |
| } | |
| } |
| // There are two types of ID in UE4. One is the editor label, the other is the id. | |
| // The editor label is only available in editor and not available in a game binary. |
| void AShaderPluginDemoCharacter::ListAllActors() | |
| { | |
| ULevel *Level = GetLevel(); | |
| for (auto Actor : Level->Actors) | |
| { | |
| UE_LOG(LogTemp, Warning, TEXT("%s"), *Actor->GetActorLabel()); | |
| } | |
| } |
| // Print log information to UE4 output console and the visual studio output console. | |
| // Be careful with Warning and Error level message, these messages will prevent the packaging of a game. | |
| UE_LOG(LogUnrealCV, Log, TEXT("The connection is gracefully closed by the client.")); | |
| // Useful Log levels: Log, Warning, Error. | |
| // You can also create a new log category | |
| DEFINE_LOG_CATEGORY(LogUnrealCV); |
Useful snippets for some UE4 tasks.
draw_center.cpp How to draw actor centerget_actor.cpp How to get an actor using its iddraw_debug_3d.cpp How to draw 3D debug points