← Learn Blueprints

Changer de niveau et garder des données avec le Game Instance

Tu changes de niveau et ton score est reparti à zéro ? C’est normal : presque tout est recréé. À la fin de ce guide, tu sauras ouvrir un autre niveau en Blueprint, ce qui est perdu à ce moment-là et comment le Game Instance garde des données d’un niveau à l’autre. Tout est vérifié sur la documentation officielle d’Epic Games.

Changer de niveau avec Open Level (by Name)

Le nœud Open Level (by Name) emmène le jeu vers un autre niveau. Tu écris son nom dans Level Name. C’est pratique pour passer du menu au jeu, ou du niveau 1 au niveau 2. Si tu écris un autre nom que celui du niveau à ouvrir, rien ne marche.

Ce qui est perdu quand le niveau change

Quand le niveau change, presque tout est jeté puis recréé : les acteurs, le GameMode, et même le PlayerController et le PlayerState du joueur. Leurs variables reviennent à leur valeur de départ.

Un PlayerState survit à un piège (le joueur réapparaît avec un Pawn neuf), mais pas à un changement de niveau. Si un joueur a 3 pièces dans son PlayerState et que tu ouvres le niveau 2, il en a 0 au début du niveau 2.

Le Game Instance : du lancement à la fermeture

Le Game Instance est créé au lancement du jeu et reste jusqu’à sa fermeture, menus et niveaux compris. Ce n’est pas un Pawn : il garde des données. Ce qui doit traverser les niveaux va là, comme la difficulté choisie au menu. Il n’y en a qu’un pour tout le jeu.

Il ne garde pas pour toujours : quand tu fermes le jeu, tout s’efface. Pour garder des valeurs d’un lancement à l’autre, il faut un fichier de sauvegarde sur le disque. Le bon duo : le fichier pour garder entre deux lancements, le Game Instance pour jouer.

Brancher ton Game Instance

  1. Crée une Blueprint Class de parent GameInstance. Cherche-la dans All Classes.
  2. Ouvre Project Settings › Maps & Modes.
  3. Dans Game Instance Class, choisis ton Blueprint. Sinon, Unreal ne s’en sert pas.
  4. Ajoute dans ce Blueprint les variables à garder, par exemple une difficulté.

Lire une variable du Game Instance

Utilise le nœud Get Game Instance, puis un Cast To vers ta classe. Le Cast t’ouvre alors les variables de ton Game Instance. Le GameMode est un autre objet, neuf à chaque niveau.

Si le Cast échoue, c’est que tu as oublié de choisir ta classe dans Game Instance Class : le projet utilise encore la classe de base.

Event Init : le démarrage

Le Game Instance n’a pas de BeginPlay, mais il a l’événement Event Init. Il se lance une seule fois, au démarrage du jeu, avant même le premier niveau. C’est le bon moment pour charger une sauvegarde. Évite d’y afficher un Print String : le niveau n’est pas encore là. Pour afficher une valeur, fais-le plus tard, par exemple dans le Event BeginPlay de ton Pawn.

L’ordre de création au démarrage

  1. Le jeu se lance : le Game Instance naît.
  2. Le niveau se charge, et le GameMode est créé.
  3. Le GameMode crée le GameState.
  4. Un joueur arrive : son PlayerController, son PlayerState, puis son Pawn sur un Player Start.

Questions fréquentes

Comment garder le score entre deux niveaux ?

Range-le dans le Game Instance. Le PlayerState, lui, est recréé à neuf à chaque changement de niveau.

Combien de Game Instance y a-t-il dans un jeu ?

Un seul, pour tout le jeu. Il vit du lancement à la fermeture, quel que soit le nombre de niveaux.

Le Game Instance garde-t-il mes données quand je ferme le jeu ?

Non. Il garde tant que le jeu tourne. Pour survivre à la fermeture, il faut un fichier de sauvegarde sur le disque.

Sources officielles

À lire aussi : GameMode, GameState et PlayerState, sauvegarder une partie avec un Save Game et Cast To et références Blueprint.

Tu veux garder un score d’un niveau à l’autre, pas à pas dans un vrai projet ? Le cours propose des leçons courtes, des quiz et des mini-projets, à ton rythme.

Apprendre Unreal Engine 5 gratuitement

Retour à l’accueil de Learn Blueprints