public void UnregisterEvent(GameObject target, int eventName, Action <object> handler) { int num = 0; while (true) { if (num >= subscribedEvents.size) { return; } SubscribedEntry subscribedEntry = subscribedEvents[num]; if (subscribedEntry.hash == eventName) { SubscribedEntry subscribedEntry2 = subscribedEvents[num]; if (subscribedEntry2.handler == handler) { SubscribedEntry subscribedEntry3 = subscribedEvents[num]; if ((UnityEngine.Object)subscribedEntry3.go == (UnityEngine.Object)target) { break; } } } num++; } subscribedEvents.RemoveAt(num); }
public void OnCleanUp() { for (int num = subscribedEvents.size - 1; num >= 0; num--) { SubscribedEntry subscribedEntry = subscribedEvents[num]; if ((UnityEngine.Object)subscribedEntry.go != (UnityEngine.Object)null) { Unsubscribe(subscribedEntry.go, subscribedEntry.hash, subscribedEntry.handler); } } for (int i = 0; i < entries.size; i++) { Entry value = entries[i]; value.handler = null; entries[i] = value; } entries.Clear(); subscribedEvents.Clear(); intraObjectRoutes.Clear(); }