Référence de l'API Blueprint¶
Un index compact des principaux points d'entrée appelables en Blueprint dont un programmeur de jeu a besoin pour piloter Libretto à l'exécution. Ceci est une référence, pas un tutoriel — pour la version narrative (modes de mise en scène, comment câbler un déclencheur, patterns de fin de dialogue), lisez Jouer des dialogues à l'exécution. Pour les GPVars et les conditions, voir GPVars et Conditions.
La palette est la source de vérité
Cette page liste uniquement les fonctions clés. Chaque fonction ci-dessous est un véritable UFUNCTION ; les
noms de node exacts, les infobulles et les nombreuses fonctions utilitaires secondaires se parcourent au mieux depuis la
palette Blueprint dans l'éditeur (recherchez Libretto, Dialogue ou GPVar) ou le details panel d'une
Dialogue Instance / du Dialogue Manager.
Les points d'entrée vivent sur trois classes réparties sur trois modules :
| Classe | Module | Type | Rôle |
|---|---|---|---|
ALBRDialogueInstance |
LBRCore |
Actor | L'instance placée (ou spawnée) sur laquelle vous démarrez un dialogue. |
ULBRDialogueManager |
LBRCore |
World subsystem | Enregistre, arrête et liste les dialogues en cours ; diffuse les événements globaux. |
ULBRGPVarSubsystem |
LBRTags |
Engine subsystem | Lit/écrit les GPFlags et les GPCounters. |
ILBRDialogueCharacter |
LBRCore |
Interface | Implémentée par tout personnage prenant part à un dialogue. |
ULBRCondition |
LBRConditions |
Object | Classe de base pour les conditions dynamiques. |
ULBRDialogueReadingLibrary |
LBRCore |
Function library | Lit un Dialogue en dehors du Sequencer (interfaces 2D). |
Démarrer des dialogues¶
Vous démarrez un dialogue en appelant une fonction StartDialogue* sur l'ALBRDialogueInstance. Elles
ne diffèrent que par la manière dont le sous-dialogue cible est choisi (voir
Sélecteurs de sous-dialogue). Chacune prend un EndEvent
(FDialogueEndEventDelegate) qui se déclenche à la fin de cette lecture — voir
Événements de fin.
Sur une Dialogue Instance placée — ALBRDialogueInstance¶
| Fonction | Objet | Paramètres clés | Renvoie |
|---|---|---|---|
StartDialogueInstance |
Démarre sans spécifier de sous-dialogue (le premier jouable). | EndEvent |
bool (démarré) |
StartDialogueWithSelector |
Choisit le sous-dialogue par un seul tag de sélecteur. | Selector : FGameplayTag, EndEvent |
bool |
StartDialogueWithSelectors |
Fait correspondre un ensemble de sélecteurs que le sous-dialogue doit porter. | Selectors : FLBRGameplayTagFlags, EndEvent |
bool |
StartDialogueWithSelectorQuery |
Fait correspondre une requête de sélecteur exacte (p. ex. A et B mais pas C). | SelectorQuery : FGameplayTagQuery, EndEvent |
bool |
StartDialogueWithAnySelector |
Combine tag + sélecteurs + requête d'un coup. | Selector, Selectors, SelectorQuery, EndEvent |
bool |
StartDialogue(SubdialogueName) est déprécié
L'ancien StartDialogue(FName SubdialogueName, EndEvent) sur l'instance (et le manager) est
marqué DeprecatedFunction. Préférez les fonctions basées sur les sélecteurs ci-dessus.
Recompilez si les tags de sélecteur semblent périmés
Les pins de sélecteur sont renseignés à partir des tags du dialogue. S'ils sont périmés sur un node, recompilez le Blueprint.
Dialogues génériques — statiques sur ALBRDialogueInstance¶
Un dialogue générique se joue sans instance placée (message vocal, voix au téléphone, audio non rattaché). Les
mêmes variantes de sélection existent en tant que fonctions statiques ; vous passez une transform de spawn et récupérez
l'ALBRDialogueInstance spawné.
| Fonction | Objet | Paramètres clés | Renvoie |
|---|---|---|---|
StartGenericDialogue |
Démarre à partir d'une struct entry-point générique. | WorldContextObject, EntryPoint : FLBRGenericDialogueEntryPoint, EndEvent |
ALBRDialogueInstance* |
StartGenericDialogueWithSelector |
Démarrage générique, tag de sélecteur unique. | WorldContextObject, Dialogue, Selector : FGameplayTag, Transform, EndEvent |
ALBRDialogueInstance* |
StartGenericDialogueWithSelectors |
Démarrage générique, ensemble de sélecteurs. | WorldContextObject, Dialogue, Selectors : FLBRGameplayTagFlags, Transform, EndEvent |
ALBRDialogueInstance* |
StartGenericDialogueWithSelectorQuery |
Démarrage générique, requête de sélecteur. | WorldContextObject, Dialogue, SelectorQuery : FGameplayTagQuery, Transform, EndEvent |
ALBRDialogueInstance* |
Warning
Le dialogue doit d'abord avoir été généré en tant que dialogue générique (clic droit sur l'asset ▸ generate as generic).
Vous ne savez pas lequel vous détenez ? — statiques sur ALBRDialogueInstance¶
| Fonction | Objet | Paramètres clés | Renvoie |
|---|---|---|---|
StartDialogueWithAnyEntryPoint |
Démarre une instance placée ou un dialogue générique à partir d'une seule valeur entry-point. | WorldContextObject, EntryPoint : FLBRAnyDialogueEntryPoint, EndEvent |
ALBRDialogueInstance* |
FLBRAnyDialogueEntryPoint porte un Dialogue ou une DialogueInstance, plus une transform de spawn
et des sélecteurs — le point d'entrée recommandé pour les déclencheurs placés par les designers. Voir
Déclencher un dialogue depuis vos propres objets.
Fonction utilitaire pour le menu déroulant d'entry-point
Pour renseigner le menu déroulant de sélecteurs sur votre propre propriété FLBRAnyDialogueEntryPoint, appelez la
fonction utilitaire statique
ALBRDialogueInstance::GetSubdialogueSelectorsCategoriesFromAnyEntryPoint(EntryPoint) depuis votre
surcharge GetGPTagRootFilter / GetSubdialogueSelectorsCategories.
Sur le Dialogue Manager — ULBRDialogueManager¶
Le manager expose également quelques fonctions de démarrage (pratiques lorsque vous détenez déjà le subsystem) :
| Fonction | Objet | Paramètres clés | Renvoie |
|---|---|---|---|
StartDialogueInstance |
Démarre une instance placée (pas de sélection de sous-dialogue). | DialogueInstance : ALBRDialogueInstance* |
bool |
StartDialogueWithEntryPoint |
Démarre à partir d'un FLBRDialogueEntryPoint. |
EntryPoint : FLBRDialogueEntryPoint |
bool |
StartDialogueAtTime |
Démarre le sequence player de l'instance à un instant donné (secondes). | DialogueStartTime : float, DialogueInstance |
— |
Accès au manager
ULBRDialogueManager est un World subsystem — obtenez-le via Get Subsystem (World Subsystem) sur
un world-context object.
Arrêter & interroger — ULBRDialogueManager¶
Pour arrêter un dialogue en cours, vous passez l'instance et une raison de fin (FLBRGameplayTagFlags).
| Fonction | Objet | Paramètres clés |
|---|---|---|
StopDialogue |
Arrête une instance en cours. | DialogueInstance, EndReason : FLBRGameplayTagFlags |
StopDialogueInstancesForDialogue |
Arrête chaque instance en cours d'un asset Dialogue donné. | Dialogue : ULBRDialogue*, EndReason |
StopDialogueInstancesInvolving |
Arrête chaque instance en cours impliquant un personnage donné. | DialogueCharacter : TScriptInterface<ILBRDialogueCharacter>, EndReason |
StopAll |
Arrête chaque dialogue en cours. | EndReason |
PauseDialogue |
Met en pause un dialogue en cours (⚠️ tous les dialogues ne supportent pas la pause). | DialogueInstance, PauseReason : FLBRGameplayTagFlags |
| Propriété en lecture seule | Type | Objet |
|---|---|---|
RunningDialogues |
TArray<ALBRDialogueInstance*> |
Chaque dialogue actuellement en cours. |
FocusedDialogue |
ALBRDialogueInstance* |
Le dialogue détenant actuellement le focus. |
Événements de fin & délégués¶
Il existe trois manières de réagir à la fin d'un dialogue — choisissez selon la portée.
| Mécanisme | Où | Type | Se déclenche… |
|---|---|---|---|
Pin End Event (EndEvent) |
Argument de chaque StartDialogue* |
FDialogueEndEventDelegate (ULBRSubdialogue*, EndReason) |
Uniquement pour cet appel StartDialogue*. |
DialogueEndEvent |
Propriété sur ALBRDialogueInstance |
FDialogueEndEventMulticastDelegate (multicast) |
À chaque sortie de cette instance. |
OnDialogueEnd |
Propriété sur ULBRDialogueManager |
FOnDialogueEnd (ALBRDialogueInstance*, EndReason) |
À chaque fin de dialogue, globalement. |
Warning
Le pin End Event ne se déclenche que pour la lecture que vous avez démarrée. Si le même dialogue est ensuite
lancé d'une autre manière (un déclencheur, par exemple), ce pin n'est pas appelé — utilisez DialogueEndEvent ou
OnDialogueEnd pour un hook persistant.
En Blueprint, ajoutez l'événement d'instance via Actor menu ▸ Add Event ▸ DialogueEndEvent. En interne, le
pin par-démarrage est le délégué à usage unique DialogueEndOnce de l'instance.
Autres délégués du manager (BlueprintAssignable)
ULBRDialogueManager diffuse également OnDialogueStarted, OnSubdialogueStarted,
OnSubdialogueEnd, OnSubtitleDisplayed, OnSubtitleHidden, OnDialogueSetTags, et
OnDialogueRemoveTags. Voir le manager dans la palette pour leurs signatures.
Personnages — ILBRDialogueCharacter (interface)¶
Tout actor/objet prenant part à un dialogue implémente ILBRDialogueCharacter (module
LBRCore). Tous les membres sont des BlueprintNativeEvent (à surcharger en C++ ou en Blueprint). Les deux plus
couramment surchargés :
| Fonction | Objet | Signature |
|---|---|---|
LBRGetCharacterName |
Nom d'affichage localisé (sous-titres, UI). Par défaut, le nom de la classe. | FText LBRGetCharacterName() const |
LBRGetCharacterGender |
Pilote la sélection de voix TTS. | ELBRCharacterGender LBRGetCharacterGender() const |
Interface complète (tous BlueprintNativeEvent)
| Fonction | Renvoie | Objet |
|---|---|---|
LBRGetBodyComponent |
USkeletalMeshComponent* |
Mesh du corps à lier dans les séquences générées. |
LBRGetHeadComponent |
USkeletalMeshComponent* |
Mesh de la tête (visage) pour la génération faciale. |
SetLookAtTarget |
— | Oriente le personnage vers un actor cible. |
RequestStartDialogue |
— | L'instance a besoin que ce personnage soit prêt ; appelez ULBRDialogueManager::OnDialogueCharacterReadyForDialogue une fois terminé (supporte le walk-to avant d'être prêt). |
RequestEndDialogue |
bool |
L'instance demande au personnage de terminer. |
DialogueSwitch |
— | Appelée lors du passage d'un dialogue à un autre. |
FindWorldInstance |
UObject* |
Résout l'instance à utiliser pour jouer un dialogue dans un monde (appelée sur le CDO). |
SetupEditorPreview |
— | Prépare le personnage pour l'aperçu d'animation dans l'éditeur/Sequencer. |
GetIgnoredTracks / GetGenerationFlags |
FLBRGameplayTagFlags |
Ignore certaines tracks à la génération (p. ex. lipsync en FPS). |
GetLipsyncModel |
FString |
Identifiant de modèle pour la génération de lipsync. |
GetStageRoles |
FGameplayTagContainer |
Rôles de mise en scène utilisés pour faire correspondre ce personnage à un slot de stage. |
Bases prêtes à l'emploi
ALBRSimpleDialogueCharacter (mesh) et ULBRIntangibleCharacter (voix seule : narrateur, téléphone)
implémentent déjà l'interface — implémentez LBRGetCharacterName une fois dans votre classe de base à partir d'une
propriété Name/CharacterName.
GPVars — ULBRGPVarSubsystem (module LBRTags)¶
Flags et compteurs indexés par un FGPTagPath. Obtenez le subsystem avec la fonction statique
GetGPVarSubsystem (BlueprintPure) ; chaque opération ci-dessous possède aussi une variante statique
(Static_*, exposée sous son nom d'affichage simple, p. ex. RaiseGPFlag) pour l'appeler sans
détenir d'abord le subsystem. Voir GPVars pour le modèle.
Flags¶
| Node | Objet | Paramètres | Renvoie |
|---|---|---|---|
RaiseGPFlag |
Lève un flag. | Path |
bool (false si déjà levé) |
LowerGPFlag |
Abaisse un flag. | Path |
bool (false si non levé) |
CheckGPFlag |
Le flag est-il levé ? | Path, bExact |
bool |
CheckNotGPFlag |
Le flag est-il non levé ? | Path, bExact |
bool |
RaiseGPFlags / LowerGPFlags |
Lève / abaisse plusieurs flags dans un path. | Path, GPFlags, (bExact) |
FGameplayTagContainer (réellement modifiés) |
SetGPFlags / RemoveGPFlags |
Écrase / efface tous les flags d'un path. | Path, (GPFlags) |
— |
GetGPFlags / GetFilteredGPFlags |
Lit les flags d'un path. | Path, (Filters, bExact, bInvert) |
FGameplayTagContainer |
CheckAllGPFlags / CheckAnyGPFlag |
Tous / au moins un flag levé ? | Path, GPFlags, bExact |
bool |
CheckGPFlagQuery |
Une FGameplayTagQuery correspond-elle ? |
Path, Query |
bool |
RaiseExclusiveGPFlag / GetExclusiveGPFlag |
Lève un unique flag exclusif / le lit. | Path, (GPFlag) |
FGameplayTagContainer / FGameplayTag |
RaiseCountedGPFlag / LowerCountedGPFlag / ClearCountedGPFlag |
Flag à comptage de références (ne s'efface que lorsque les levées/abaissements s'équilibrent). | Path |
int |
Compteurs¶
| Node | Objet | Paramètres | Renvoie |
|---|---|---|---|
SetGPCounter |
Fixe la valeur d'un compteur. | Path, Value |
int |
AddToGPCounter |
Incrémente/décrémente un compteur. | Path, Diff |
int (nouvelle valeur) |
GetGPCounter |
Lit un compteur (0 si non défini). | Path |
int |
IsGPCounterDefined |
A-t-il déjà été défini (même à 0) ? | Path |
bool |
RemoveGPCounter |
Efface et supprime un compteur. | Path |
— |
Écouteurs & durée de vie¶
| Node | Objet |
|---|---|
BindEventToOnGPFlagChangedPerPaths / ...GPCounter... |
S'abonne aux changements sur des paths spécifiques (et leurs enfants). |
UnbindEventFrom... / UnbindAllEventsFrom... / ...ForObject |
Se désabonne d'un événement spécifique, de tous les événements d'un path, ou de tous les événements d'un objet. |
OnGPFlagChanged / OnGPCounterChanged |
Délégués multicast assignables levés à tout changement. |
ResetGPVars |
Efface tous les GPVars (recharge éventuellement les valeurs par défaut). |
Lecture des dialogues — ULBRDialogueReadingLibrary¶
Des helpers statiques et sans état (module LBRCore, catégorie Libretto ▸ Reading) qui parcourent
un Dialogue sans le jouer, pour des documents, des fils de messagerie, des popups et d'autres
interfaces 2D. Les lignes sont désignées par leur index ; FlagFilter ne garde que les
sous-dialogues qui portent un flag (vide = aucun filtre). Voir
Lire des dialogues dans des interfaces 2D.
| Fonction | Rôle |
|---|---|
FindFirstPlayableSubdialogue / GetPlayableSubdialogues |
Le premier / chaque sous-dialogue qui passe le filtre et sa condition, dans l'ordre de l'asset. |
GetSubdialogueEntry |
Première étape (FLBRReadStep) d'un sous-dialogue. |
GetNextStep |
Étape suivant une ligne affichée ou un reply choisi : If/Else, fin d'un reply, Goto. |
GetValidReplies |
Replies à proposer (FLBRReplyOption : bAvailable, bIsDefault). |
GetDefaultReply |
Le reply par défaut, s'il est encore valide. |
FindReplyMatchingInput |
Le reply qui correspond au texte saisi, ou le reply par défaut. |
RecordReplyChosen |
Enregistre le reply dans les GPVars. |
GetRetainedReply |
None / Single / Ambiguous : quel reply d'un choice a été choisi auparavant. |
ApplyLineEffects |
SetTags, RemoveTags, puis actions d'une ligne. |
MarkSubdialogueDone / MarkDialogueDone |
Lèvent les flags « done », comme un dialogue joué. |
Conditions — ULBRCondition (module LBRConditions)¶
Créez une condition dynamique (pour un sous-dialogue, une Reply ou une branche If) en sous-classant
ULBRCondition et en surchargeant Evaluate.
| Membre | Type | Objet |
|---|---|---|
Evaluate |
BlueprintNativeEvent, protected |
À surcharger. Renvoie le résultat de la condition. PURE_VIRTUAL sur la base. |
EvaluateWithCache |
BlueprintCallable |
Renvoie le résultat en cache s'il est valide, sinon Evaluate() puis met en cache. |
GetStoredResult / IsStoredResultValid |
BlueprintCallable |
Lit le résultat en cache / indique s'il est valide. |
InvalidateLastResult |
BlueprintCallable |
Force une réévaluation la prochaine fois. |
GetLabel / GetLabelSuccess / GetLabelFail |
BlueprintNativeEvent, pure |
Labels affichés dans l'éditeur sur la ligne Reply / If / Else. |
| Propriété | Objet |
|---|---|
bCacheSuccess / bCacheFailure |
Met en cache les résultats positifs / négatifs pour éviter de revérifier. |
Comment |
Note libre de l'auteur. |
Conditions intégrées
Les opérateurs AND / OR / XOR / NOT / FALSE sont livrés en tant que sous-classes de ULBRCondition, avec
des conditions GPVar et une condition dédiée ULBRDialogueDoneCondition (préférez-la aux vérifications
de path GPVar « ce dialogue a-t-il été joué » écrites à la main). Voir Conditions.
Voir aussi¶
- Jouer des dialogues à l'exécution — modes de mise en scène, événements de fin, déclencheurs (guide narratif).
- GPVars — le modèle de flags/compteurs derrière
ULBRGPVarSubsystem. - Conditions — créer des Blueprints de condition.
- Gameplay Tag Flags — le type
FLBRGameplayTagFlagsutilisé pour les sélecteurs et les raisons de fin. - Lire des dialogues dans des interfaces 2D — les helpers de lecture en contexte.