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

Créer un callback avec System.Action

Langage C#

Utiliser des fonctions de retour (callback) est très utile dans beaucoup de cas .. Voyons comment utiliser System.Action.

3 min Débutant

Si vous utilisez une coroutine par exemple et que vous avez besoin que la méthode (et ou classe) appelante soit appelée quand la coroutine prendra fin, alors vous aurez besoin d'utiliser la notion de callback.

Un callback est simplement et littéralement un "appel de retour". Ainsi le code s'exécute, puis à la fin on appelle, en retour, une fonction qui a été passée en paramètre.

Dans ce tutoriel, nous vous proposons d'utiliser System.Action du C# pur pour réaliser notre callback.

Préparer la méthode du service

De manière simplifiée, nous allons créer une méthode dans un script service. Cette méthode sera en charge de rappeler (callback) la fonction qui sera passée en paramètre.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class serviceAction : MonoBehaviour
{
    
    public void onLaunch(System.Action<int,string> callback = null){
        Debug.Log("appel du service");

        if(callback != null){
            callback(4,"salut toi !!");
        }

    }
}

System.Action est un delegate au sens propre du langage C#. Ainsi de fait nous pouvons "déléguer son action à une autre fonction ... justement celle qui sera passée en paramètre.

Dans notre exemple ci-dessus, la fonction aura 2 paramètres: un entier et une chaîne de caractères.

La notion de Delegate ne sera pas développée ici, mais nous ferons un tutoriel dédié prochainement.

Préparer l'appel du client

Il suffit maintenant de créer un second script, dit client, car nous allons appeler notre service créer ci-dessus.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class clientManager : MonoBehaviour
{
    [SerializeField]
    private serviceAction service;

    // Start is called before the first frame update
    void Start()
    {
        service.onLaunch(onCallBack);
    }

    public void onCallBack(int value, string message){
        Debug.Log("on reçoit : "+ value+" avec un message "+message);
    }
}

Démonstration en vidéo

Retrouvez l'ensemble de la création des scripts sur cette vidéo.
Vues: 36

Connectez-vous pour applaudir applause logo 1 claps

Validation du Tutoriel

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

Vous aimerez aussi...

Blog et Tutoriels

×