Logo Makeyourgame
Accueil Les formations Créer un jeu Les ateliers Les tutoriels Blog Loterie
Logo Makeyourgame
Les formations Les financements Les exercices La certification Unity
Logo Makeyourgame
Mes objectifs Les jeux Les ressources Le glossaire
Logo Makeyourgame
Les tutos Les tutos Youtube

Créer un callback avec System.Action : Langage C#

pictureProfil_alto
Ecrit par alto
Catégorie Langage C#
Mis à jour le 09/09/2020
Créer un callback avec System.Action

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

3 min Intermédiaire

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: 3492

Licence:



Validation du Tutoriel

Veuillez vous connecter ou créer un compte pour pouvoir valider ce tutoriel et ainsi gagner de l'expérience (XP) !

Vous aimerez aussi...

Blog et Tutoriels

C# : les fonctions

C# : les fonctions

par cevantime

Dans plusieurs chapitres concernant les bases du C#, nous avons vu la déclaration de variable, les branchements conditionnels et les boucles. Dans ce chapitre, nous verrons un dernier pilier fondamental de la programmation : les fonctions !

applause logo1