Créer son propre type d’asset sur UE4

Versions: Unreal Engine 4.21.1 et Visual Studio 2017

Dans ce tutoriel, nous allons voir comment créer notre propre type d’asset personnalisé afin d’étendre les fonctionnalités de l’éditeur Unreal Engine 4 et optimiser ainsi le rendement de nos projets. Pour ce faire, nous allons créer un type d’asset appelé ItemDescription héritant de la classe Object et qui nous permettra de créer un asset ayant comme paramètres une description ainsi que le nombre de points de score qu’il rapporte. Pour aller plus loin dans la customisation, nous verrons également comment créer un asset de ce type en glissant-déposant un fichier texte contenant la description que nous voulons lui attribuer. C’est parti!

Déclaration du type

Etape 1. Si vous n’avez pas déjà de projet UE4 d’ouvert, créez un projet C++ basique (avec le template Basic Code par exemple). Pour ma part, j’ai créé un nouveau projet C++ intitulé: CreationTypeAsset.

Etape 2. Faites un clic droit dans votre content browser et choisissez l’option New C++ Class. Dans la fenêtre qui s’ouvre, cochez la case Show All Classes, choisissez la classe Object comme classe parente et cliquez sur Next. Dans la fenêtre suivante, donnez le nom MyCustomAsset à votre classe et cliquez sur Create Class.

Etape 3. Visual Studio devrait se lancer. Si ce n’est pas le cas, ouvrez votre projet VS en cliquant sur le fichier .sln qui se trouve à la racine de votre projet Unreal Engine. Dans Visual Studio, ouvrez le fichier MyCustomAsset.h et modifiez son contenu pour correspondre à ceci:

Avant de continuer, notez tout de même que si vous copiez le code ci-dessus, il faudra faire en sorte de ne pas modifier le nom de la macro située juste à côté du nom de votre classe dans votre projet. Dans mon cas, il s’agit de la macro CREATIONTYPEASSET_API à la ligne 9 et, en fonction du nom de votre projet, celle-ci aura un nom différent. Il s’agit en fait d’une macro définie par Unreal Build Tool (UBT) et permet de paramétrer la déclaration des imports/exports de DLL sur Windows. Si vous voulez plus d’infos sur le sujet, cliquez ici.

Etape 4. Compilez votre code. Une fois la compilation terminée, notre type d’asset est déclaré et nous pouvons passer à la suite: la création d’une instance dans l’éditeur.


Création d’une classe Factory

C’est ici que les choses commencent à être intéressantes 🙂 En effet, nous allons créer une classe Factory pour notre type d’asset. Qu’est-ce qu’une factory? Il s’agit en fait d’une classe permettant de gérer la création d’instances de notre nouveau type d’asset directement dans l’éditeur d’Unreal Engine. Pour ce tuto, nous allons implémenter deux classes factory: une première permettant de créer notre instance depuis le menu contextuel, qu’on va appeler UFactoryNew, et une seconde permettant de créer notre instance en glissant-déposant un fichier texte qui contiendra la description de notre personnage, qui va s’appeler UFactoryDragAndDrop.

Factory pour le menu contextuel

Etape 1. Dans votre projet Unreal Engine, faites un clic droit dans votre content et choisissez l’option New C++ Class. Dans la fenêtre qui s’ouvre, cochez la case Show All Classes et choisissez cette fois-ci la classe Factory comme classe parente. Cliquez sur Next, donnez le nom FactoryNew à votre classe et cliquez sur Create Class.

Etape 2. Dans Visual Studio, éditez le code du fichier FactoryNew.h pour correspondre au code suivant:

Etape 3. Ouvrez le fichier FactoryNew.cpp et editez son code pour correspondre à celui-ci:

Etape 4. Compilez votre code. Fermez l’éditeur Unreal Engine et ré-ouvrez le pour qu’il prenne en compte les changements effectués. Et voila! Si vous faites un clic droit dans le content browser et que vous choisissez la catégorie Blueprint, vous devriez voir votre nouveau type d’asset apparaître 🙂

Etape 5. Créez-en un et ouvrez-le. Vous pourrez alors éditer ses propriétés.

Factory supportant le drag & drop

Etape 1. Tout comme pour le premier type de factory, créez une nouvelle classe et choisissez la classe Factory comme classe parente. Cliquez sur Next et donnez cette fois-ci le nom
FactoryDragAndDrop . Cliquez ensuite sur Create Class.

Etape 2. Dans Visual Studio, ouvrez le fichier FactoryDragAndDrop.h et modifier son code comme suit:

Etape 3. Remplacez le contenu du fichier FactoryDragAndDrop.cpp pour correspondre à ceci:

Etape 4. Compilez votre code puis fermez et ré-ouvrez l’éditeur Unreal Engine pour qu’il puisse prendre en compte les changements. Essayez de glisser déposer un fichier texte (.txt) contenant une courte description… et voilà! 🙂

Nous venons de créer notre propre type d’asset à utiliser dans l’éditeur Unreal Engine. L’intérêt principal de ce genre de démarche consiste surtout à améliorer l’automatisation et le rendement de vos projets. Bien sûr, au travers de ce tuto, nous n’avons fait qu’effleurer le sujet et la création d’un type d’asset personnalisé peut vite devenir très complexe. On pourrait par exemple customiser le look des assets créés dans l’éditeur en utilisant des Asset Actions ou encore créer un éditeur entièrement personnalisé pour modifier nos assets, comme c’est le cas par exemple pour le plugin gratuit Not Yet Dialogue System disponible sur le marketplace d’Epic Games. Pour continuer dans votre apprentissage, n’hésitez pas à jeter un coup d’œil aux liens cités ci-dessous. C’est grâce à ces derniers que j’ai réussi à mieux comprendre le concept pour ensuite rédiger ce tuto 🙂


Liens utiles:
Posted in Tutos C++, Unreal Engine and tagged , , , .

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *