Unsubscribe from an Event Using a Lambda Expression

0

Jak to ogarnąć?
Mam wywołanie zdarzenia:

public event Action<float> OnDamage;
OnDamage?.Invoke(amount);

Subskrybuje:

core.Combat.OnDamage += (a) => { stateMachine.ChangeState(player.HurtState); };

Ale nie wiem jak to odsubskrybować (nie wiem jak to po polsku określić)... wyrważenie z minusem nie działa:

core.Combat.OnDamage -= (a) => { stateMachine.ChangeState(player.HurtState); };
1

Przypis sobie tą lambdę do zmiennej. Porównanie delegatów nie może odbywać się inaczej niż poprzez porównanie referencji, a dwie lambdy (mimo, ze sa równoważne) to różne obiekty.

0

W jaki sposób to przypisać? Jak to ma ogólnie wyglądać?

3

Teraz, od .NET 6 chyba to mozna nawet var lambda = () => 42, w starszych trzeba sobie zamiast var dobrać jakiś Func czy Action.
W Twoim przypadku to Action<float> action = a => ...

1 użytkowników online, w tym zalogowanych: 0, gości: 1