Итак, я создал очень простой менеджер событий для игры в Unity и сохраняю ссылки на Действия в словаре, например, так:
public void SubscribeToAction(string actionKey, Action<object> listener)
{
Action<object> action;
if(actionList.TryGetValue(actionKey, out action)){
action += listener;
}else{
action += listener;
actionList.Add(actionKey, action);
}
}
Но что происходит, даже если я отписываюськогда я покидаю сцену, я обнаруживаю, что звонки выполняются старым слушателям, и я получаю нулевое исключение:
public void UnSubscribe(string actionKey, Action<object> listener)
{
Action<object> action;
if(actionList.TryGetValue(actionKey, out action)){
action -= listener;
}
}
Единственное решение, которое я нашел, это очистить весь словарь при выходе изсцена и добавление подписок снова в методах start ().