Accueil logo MakeYourGame gachetteG gachetteD paddleG paddleH paddleD paddleB buttonG buttonH buttonD buttonB

Découvrir Adressables de Unity

Unity

Le système de gestion des Asset Adressables de Unity, permet de charger les Assets par "address". Cela permet d'optimiser l'utilisation de la mémoire de son application.

10 min Débutant

Pré-requis: ce tutoriel part du principe que vous avez les bases sur le langage C#, ainsi que sur l'utilisation du moteur de jeu Unity

La version Unity 2019.3 est utilisée ici, avec la version 1.1.10 du Package Adressables. Ainsi il se peut que vous notiez des différences au niveau des captures d'écran si vous utilisez une autre version.

Dans ce tutoriel nous allons voir comment installer le package Adressables, ainsi qu'une première utilisation du package pour voir comment charger un Asset.

L'idée du système Adressables, par rapport aux systèmes traditionnels (Instantiate par exemple), est de ne pas charger en mémoire un Asset tant que l'on ne le demande pas. De plus avec ce système, il est possible de mettre à disposition des Assets hébergés sur un serveur, permettant de mettre à jour une partie des contenus (Assets) de votre jeu, sans que votre utilisateur doive télécharger à nouveau une mise à jour.

Allez plus loin avec notre premier Atelier dédié aux Adressables et découvrez comment utiliser des Assets hébergés sur un serveur web. (Atelier en cours de rédaction)

Installation du package Adressables

Depuis l'arrivée du Package Manager, il est très simple d'installer un package Unity officiel. Ouvrez donc la fenêtre si ce n'est déjà fait :

Window -> Package Manager

https://makeyourgame.fun//upload/users/alto/tutoriels/Adressables/adressablespackageinstall-5ee38379b4d20.png

Choisissez dans la liste "All Packages", la package Adressables, vérifiez que le package est bien vérifié pour la version de Unity que vous utilisez (ici 2019.3 verified), et cliquez sur le bouton "Install" ou "Download"en bas. Sur la capture ci-dessus, le bouton indique "Remove" car le package est déjà installé dans le projet  https://makeyourgame.fun/sceditor/emoticons/smile.png .

Prenez le temps de lire le descriptif du package, d'en apprendre davantage sur le rôle du package Adressables de Unity.

Choisissez bien le package vérifié ... En effet on pourrait être tenté de prendre la version 1.10.0, mais en cliquant dessous, vous verrez que cette version n'est pas vérifiée pour 2019.3. Ainsi on s'assure d'avoir un package sans bug !

Prendre en main Adressables

Une fois le package installé, il est alors possible de d'indiquer à Unity, quels sont les Assets que vous souhaitez marquer comme Adressables. Ainsi ces Assets seront mis en bundle, disponible ensuite pour un appel de chargement depuis le code C#.

Mais c'est quoi un asset déjà ?
Tout ce qui est dans votre répertoire Asset de votre projet ! Ainsi les sons, les images, les textures, les prefabs et même les scènes peuvent être déclarées Adressables.

https://makeyourgame.fun//upload/users/alto/tutoriels/Adressables/adressablestrue-5ee3870f277b5.png

Choisissez donc un Asset, puis dans le panneau Hierarchy, cochez "Adressable" (en haut à gauche) ... et c'est tout !

Dans l'exemple ci-dessus, un Material a été choisi pour être mis dans un bundle

Il suffit maintenant de vérifier que votre Asset a bien été ajouté à la liste des Assets adressables de votre projet. Ouvrez la fenêtre Adressables:

Window -> Asset Management -> Adressables

https://makeyourgame.fun//upload/users/alto/tutoriels/Adressables/adressablesmanager-5ee38392dd94b.png

La capture ci-dessus montre qu'il est possible de créer des groupes, et c'est tout indiqué, afin de pouvoir s'y retrouver et surtout pour organiser les prochaines mises à jour de votre jeu vidéo.

Pour créer un groupe:

Clic droit -> Create New Group

Chaque nouveau groupe ajoute un Asset dans votre dossier Assets/AdressableAssetsData/AssetsGroups/. 

Surtout ne supprimez rien dans ces dossiers

Vous pouvez ajouter bien sûr d'autres Assets dans cette liste d'Adressables, et ensuite par glisser/déposer, déplacez les Assets de la liste pour réorganiser dans les groupes.

Utiliser un bundle Adressables

Avant de pouvoir faire nos appels de chargement par script C#, on doit d'abord créer le bundle (Build Player Content). Sans trop rentrer dans les détails, il est très simple de créer un bundle local, qui sera donc embarqué avec le build final de votre jeu vidéo (build PC par exemple). 

Encore une fois, si vous souhaitez aller plus loin avec Adressables de Unity, suivez l'Atelier avancé. (Atelier en cours de rédaction)

Pour créer votre premier build, rendez-vous sur la fenêtre Adressables qui liste l'ensemble de vos Assets cochés en Adressables. 

Puis cliquez sur: 

Build-> Build Player Content

https://makeyourgame.fun//upload/users/alto/tutoriels/Adressables/adressablesbuildplayercontent-5ee38a8bb381b.png

L'éditeur Unity crée alors les bundles pour votre projet.

Charger un Asset Adressables dans le code

Pour une premier test nous allons ici charger un Asset, de la liste crée aux étapes précédentes. Nous allons utiliser une AssetReference pour affecter un Sprite à un composant Image.

Créez donc un composant image dans votre scène, mais le luis donnez pas encore de Sprite... vous aurez donc une belle image blanche, bien moche ... mais c'est pas grave, ce sera chargé dynamiquement par le script.

Créez un script C# nommé BasicReference. Donnez ce script à votre GameObject qui porte aussi le composant Image.

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.UI;
using Object = UnityEngine.Object;
public class BasicReference : MonoBehaviour {
    
    public AssetReference spriteAssetRef;
    public Sprite intermediate; //for debug
    public Image imageToControl;
    public bool loadAtStart;

    // Start is called before the first frame update
    void Start () {
        if (loadAtStart)
            Addressables.LoadAssetAsync<Sprite> (spriteAssetRef).Completed += OnLoadDone;

    }
    private void OnLoadDone (UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle<Sprite> obj) {
        // In a production environment, you should add exception handling to catch scenarios such as a null result.
        Debug.Log ("loading du sprite terminé");
        if (obj.OperationException != null) {
            Debug.Log ("Opération exception");
        }
        intermediate = obj.Result;
        imageToControl.sprite = intermediate;

        Debug.Log ("affectation du sprite terminé");
    }

}
Ce script a besoin d'une AssetReference, qui est bien l'Adress de l'Asset présent dans votre liste. Cliquez sur ce paramètre du script pour choir l'Asset à charger.

https://makeyourgame.fun//upload/users/alto/tutoriels/Adressables/adressablesassetref-5ee38d9241358.png

Enfin donnez le composant image au paramètre ImageToControl, et cliquez sur "loadAtStart". 

Si maintenant vous lancez votre scène, vous devriez voir votre image (blanche moche) remplacée par l'Asset que vous avez choisi dans votre liste. 

Evidemment si vous avez sauté des étapes et que votre build content player n'est pas fait ... vous aurez une erreur au chargement !

Nous voici arrivé au terme de la découverte installation et première utilisation du système Adressables de Unity. La route est encore longue pour pouvoir faire des mises à jour, ou encore changer l'ambiance de votre interface, sans que l'utilisateur ne fasse une nouvelle mise à jour, mais vous avez déjà fait le premier pas !

Un Atelier dédié sur Adressables est actuellement en cours de préparation et sa sortie est prévue pour la fin de semaine du 22/06/2020. 

Restez connectés.ées et Have Fun !

Complément vidéos

Retrouvez la vidéo de présentation sur le concept Adressables de Unity.

Première prise en main du système Adressables

Vues: 170

Connectez-vous pour applaudir applause logo 0 claps

Validation du Tutoriel

Veuillez vous connecter ou créer un compte pour pouvoir valider ce tutoriel et ainsi gagner stardust et XP !

×