top of page

Il m'arrive régulièrement au cours de mes projets de devoirs créer un système d'inventaire, que ce soit en C# ou en C++. Je les crée toujours de sorte qu'il soit simple de modifier l'inventaire et d'ajouter de nouveaux objets.

Je sépare toujours l'inventaire de l'interface utilisateur, de sorte que je puisse facilement placer des inventaires sur d'autres éléments du jeu, tel que des coffres ou bien des ennemis.

Que ce soit sur le moteur de jeu Unity Engine ou bien Unreal Engine, je m'y prends à chaque fois de la même manière.

Système d'Inventaire

Système

Je commence toujours par les objets. Je crée un Scriptable Object (Unity)/une Structure (Unreal), dans lequel j'ajoute les variables qui contiennent les différentes informations de l'objet, tel que le nom, la description, etc.

Je créer ensuite un script (Unity)/un Blueprint Component (Unreal) afin de créer le système d'inventaire. C'est ici que je stock les objets du personnage avec toutes leurs informations et que je définis les paramètres de l'inventaire.

On peut voir dans l'exemple que je peux définir la taille maximum de l'inventaire ainsi que la distance à laquelle les objets apparaissent lorsque le personnage souhaite les lâcher.

Une partie du code du système d'inventaire en C++.

Cette fonction permet de retirer un objet de l'inventaire en donnant l'ID de celui-ci. Le système regarde alors s'il trouve un objet correspondant à celui de l'ID donné en paramètre. Si c'est le cas, il en retire la quantité demandée.

Interface Utilisateur

Il est nécessaire ensuite de pouvoir afficher cet inventaire. Je créer alors une interface utilisateur qui est indépendante de ce dernier. À chaque fois que le joueur décide d'ouvrir le menu d'inventaire, l'interface récupère les informations de l'inventaire afin de les afficher.

Donc, pour chaque case, je regarde si dans l'inventaire se trouve un objet à l'endroit de cette case.
Par exemple, pour la troisième case, je regarde si un objet se trouve à l'index 3 de la liste d'objets de l'inventaire.
Si un objet est présent, j'affiche ses informations dans la case ; sinon, je laisse les informations vides.

bottom of page