ASkeletalMeshActor doesn't Tick

I created a C++ class based on ASkeletalMeshActor, called MySkeletalMeshActor.
I then created a BluePrint based on this C++, called MySkeletalMeshActor_BP

In the C++ class, I have overridden the BeginPlay and Tick methods, without forgetting to call Super:: for each of these methods. For the moment, these methods are only supposed to log a message, allowing me to check everything is fine.


Only the BeginPlay() log is visible in the console. The Tick() method doesn’t do anything.


#pragma once

#include "CoreMinimal.h"
#include "Animation/SkeletalMeshActor.h"
#include "MySkeletalMeshActor.generated.h"

class UNNAMED_API AMySkeletalMeshActor : public ASkeletalMeshActor

	// Called when the game starts
	virtual void BeginPlay() override;
	virtual void Tick(float DeltaTime) override;


#include "MySkeletalMeshActor.h"

void AMySkeletalMeshActor::BeginPlay()
	UE_LOG(LogTemp, Warning, TEXT("Begin Play"));

void AMySkeletalMeshActor::Tick(float DeltaTime)
	UE_LOG(LogTemp, Warning, TEXT("Tick"));

In the BluePrint, Tick is enabled:

Anybody knows what is wrong with SkeletalMeshActor Tick() method ?

Thak you!

I know your blueprint Tick settings seem correct, but try adding the following to your actor’s constructor:

PrimaryActorTick.bCanEverTick = true;

That setting is false by default for the ASkeletalMeshActor class. It seems like you shouldn’t need to change it, based on your blueprint’s settings, but maybe you actually do.

Amazing! That works! Thank you very much! Managing variables in both C++ file and BluePrint can be quite confusing sometimes.