
Utiliser des fonctions de retour (callback) est très utile dans beaucoup de cas .. Voyons comment utiliser System.Action.
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.
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);
}
}