Ca vaut aussi pour ceux qui sont dans unreal parce que le blueprint est converti en c++ donc ce sont les mêmes règles.
On va débuter par le début, le pattern de base des jeux vidéo: la state machine.
La statemachine de jeu est préprogrammée dans Unreal, en revanche la statemachine de pawn c'est à vous de la créer.
La petite subtilité à savoir c'est qu'il faut utiliser le polymorphisme (typer un objet state par sa classe-mère) pour empêcher le bug de compilation des include circulaires en entête, les classes-filles n'étant appelées que dans le corps cpp.
Chez moi ça donne un truc de ce genre:
En header:
#include "UI_Pawn_Human_Action.h"
UI_Pawn_Human_Action * m_waitAction, * m_walkAction;
En corps:
#include "UI_Pawn_Human_Action_Wait.h"
#include "UI_Pawn_Human_Action_Walk.h"
m_waitAction = new UI_Pawn_Human_Action_Wait(this);
m_walkAction = new UI_Pawn_Human_Action_Walk(this);