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);
Il faut expliquer les pointeurs aux jeunes.
Un pointeur de variable est l'adresse mémoire de la variable, donc un tableau à une seule case.
Un pointeur de tableau est l'adresse mémoire de la case zero du tableau, donc un tableau dont on ne connait pas la taille.
Un pointeur d'objet est l'adresse mémoire de l'objet.
Voici l'équivalent dans vos langages interpretés (python, c#, javascript, etc):
- pointeur de variable: un tableau à une seule case
- pointeur de tableau: une référence au tableau
- pointeur d'objet: une référence d'objet
seule la syntaxe change mais ça fait exactement la même chose que c++