Why does my event begin play never fire?

Hello !

I have a player character blueprint based of a C++ custom character class. I have in the event graph a begin play node but it never fire. That is weird because when I put a tick node, it always fire.

Here is an image of the graph :

33537-beginplay.png

I don’t really think it can give you any useful information. If you know how to solve this problem, please help me !

Thank you !

You forgot to call Super::BeginPlay() in C++.

By overriding you fully replace code in particular function and it’s not called in parent classes, Super statement let you communicate with parent class and call overrided class. Now what this has to do with blueprint BeginPlay not being called? It’s because Blueprint BeginPlay is actually different function in C++ called ReceiveBeginPlay() and it’s called in AActor class BeginPlay()

https://github.com/EpicGames/UnrealEngine/blob/c9f4efe690de8b3b72a11223865c623ca0ee7086/Engine/Source/Runtime/Engine/Private/Actor.cpp#L2449

Since you overrided that function, BeginPlay() in AActor is never called and as result ReceiveBeginPlay() is never called either and so blueprint BeginPlay won’t be triggered as well. Thats why you need to place Super::BeginPlay() in your C++ class BeginPlay() so it will call BeginPlay() in AActor which will call ReceiveBeginPlay() and then you BeginPlay in blueprint will work. Same goes with Tick() if you ever gonna use it.

You were right that was the problem. Now everything is working perfectly fine !

Thank you very much !