[RESOLU][delegate] précisions sur les delegates.

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
megablast2
Messages : 152
Inscription : 15 Août 2013 16:47

[RESOLU][delegate] précisions sur les delegates.

Message par megablast2 » 30 Déc 2021 17:34

Bonjour,
J'aurais voulu profiter de vos lumière concernant les delegates. En lisant des tutos sur la manière dont fontionne les state machine, je suis tombé la dessus.
Tuto sur un game manager

Le code consiste a faire un un gestionnaire de jeu basique en state machine.

Code : Tout sélectionner

public class Menu : MonoBehaviour {
    SimpleGameManager GM;

    void Awake () {
        GM = SimpleGameManager.Instance;
        GM.OnStateChange += HandleOnStateChange;
    }

    public void HandleOnStateChange ()
    {
        Debug.Log("OnStateChange!");
    }
Il faut comprendre ça comment? Que quand on ajoute la fonction HandleOnStateChange à GM.OnStateChange, si HandleOnStateChange y est déja, alors elle sera changé ce qui évite d'avoir a enlever celle d'avant? Je demande ça car si j'ai bien compris une delegate peut contenir plusieurs méthode. Du coup ça devrait poser problème si les fonctions sont différencié non?

Bonne journée,
Dernière édition par megablast2 le 10 Jan 2022 11:45, édité 1 fois.

Avatar de l’utilisateur
jmhoubre
Messages : 856
Inscription : 05 Oct 2019 22:05

Re: [delegate] précisions sur les delegates.

Message par jmhoubre » 30 Déc 2021 20:58

Bonjour,

voici un excellent tuto sur les delegates.

Quand il est écrit GM.OnStateChange += HandleOnStateChange, cela veut dire que :
  1. SimpleGameManager contient un délégué OnStateChange (assez souvent un System.Action).
  2. On abonne la méthode HandleOnStateChange à OnStateChange.
On en déduit que la classe SimpleGameManager déclenche l'action (ici un changement d'état du FSM) probablement sous la forme OnStateChange?.Invoke(); chaque méthode abonnée s'exécute dans la foulée.
Ne pas oublier de se désabonner (généralement dans OnDisable ()) avec GM.OnStateChange -= HandleOnStateChange;

Un delégué peut recevoir plusieurs abonnements, mais les méthodes doivent avoir la même signature.

megablast2
Messages : 152
Inscription : 15 Août 2013 16:47

Re: [delegate] précisions sur les delegates.

Message par megablast2 » 03 Jan 2022 10:36

Merci pour ces explications et le liens. Ca offre pas mal de possibilité pour garder du code propre j'ai l'impression. Bonne année aussi :)

Répondre

Revenir vers « Scripting »