C++ UE4
Quelques bouts de code C++ pour l'Unreal Engine 4.
Récupérer un Actor dans le niveau
for (TActorIterator<ACameraActor> ActorItr(GetWorld()); ActorItr; ++ActorItr)
{
ACameraActor* cam = Cast<ACameraActor>(ActorItr->_getUObject() );
SetViewTarget( cam );
}
Ajoute un message à l'écran
Exemple Doc//#include "Engine.h"
GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Red, "Alerte de collision !");
Temps écoulé depuis le lancement
float time = UGameplayStatics::GetRealTimeSeconds(GetWorld());
Event dispatcher
Dans la classe (ACustomGameMode) qui diffuse l'évênement
//dans le .h avant la déclaration de classe
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FScoreDelegate, int32, Score);
// Dans le .h dans les propriétées publiques :
UPROPERTY(BlueprintAssignable, Category = "Main")
FScoreDelegate OnScoreChange;
// Dans le .cpp pour diffuser l'évênement :
OnScoreChange.Broadcast(Score);
Dans la classe (ACustomScore) qui s'abonne à l'évênement
// Dans le .h dans les propriétées protégées
protected:
void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
// Dans le .cpp ajout d'un écouteur
void ACustomScore::BeginPlay()
{
Super::BeginPlay();
//Score = 0;
ACustomGameMode* Cgm = Cast<ACustomGameMode>(GetWorld()->GetAuthGameMode());
if (Cgm)
{
Cgm->OnScoreChange.AddDynamic(this, &ACustomScore::OnScoreChange);
}
}
// Dans le .cpp suppression de l'écouteur
void ACustomScore::EndPlay(const EEndPlayReason::Type EndPlayReason)
{
ACustomGameMode* Cgm = Cast<ACustomGameMode>(GetWorld()->GetAuthGameMode());
if (Cgm)
{
Cgm->OnScoreChange.RemoveDynamic(this, &ACustomScore::OnScoreChange);
}
Super::EndPlay(EndPlayReason);
}
Ajout d'un évênement appelable avec une classe héritée Blueprint
UFUNCTION(BlueprintImplementableEvent, Category = Score)
void OnScoreChange(int32 Score);
Désactiver un Actor
Créer une pool d'objets (Actor)actor->SetActorHiddenInGame(!active);
actor->SetActorEnableCollision(active);
actor->SetActorTickEnabled(active);
TInlineComponentArray<UActorComponent*> Components;
actor->GetComponents(Components);
for (int32 CompIdx = 0; CompIdx<Components.Num(); CompIdx++)
{
Components[CompIdx]->SetComponentTickEnabled(active);
}
Créer un .gitignore
#############
## UE4
#############
Binaries
DerivedDataCache
Intermediate
Saved
#############
## OS detritus
#############
# Windows image file caches
Thumbs.db
ehthumbs.db
# Folder config file
Desktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Mac crap
.DS_Store