public void RemoveEventListener(int _index) { if (dic.ContainsKey(_index)) { SuperFunctionUnit unit = dic[_index]; dic.Remove(_index); Dictionary <string, List <SuperFunctionUnit> > tmpDic = dic2[unit.target]; List <SuperFunctionUnit> tmpList = tmpDic[unit.eventName]; tmpList.Remove(unit); if (tmpList.Count == 0) { tmpDic.Remove(unit.eventName); if (tmpDic.Count == 0) { SuperFunctionControl control = unit.target.GetComponent <SuperFunctionControl>(); control.isDestroy = true; GameObject.Destroy(control); dic2.Remove(unit.target); } } } }
public void RemoveEventListener(GameObject _target, string _eventName) { if (dic2.ContainsKey(_target)) { Dictionary <string, List <SuperFunctionUnit> > tmpDic = dic2[_target]; if (tmpDic.ContainsKey(_eventName)) { List <SuperFunctionUnit> list = tmpDic[_eventName]; foreach (SuperFunctionUnit unit in list) { dic.Remove(unit.index); } tmpDic.Remove(_eventName); if (tmpDic.Count == 0) { SuperFunctionControl control = _target.GetComponent <SuperFunctionControl>(); control.isDestroy = true; GameObject.Destroy(control); dic2.Remove(_target); } } } }
private void DestroyControl(GameObject _target) { SuperFunctionControl[] controls = _target.GetComponents <SuperFunctionControl>(); for (int i = 0; i < controls.Length; i++) { SuperFunctionControl control = controls[i]; if (!control.isDestroy) { control.isDestroy = true; GameObject.Destroy(control); } } dic2.Remove(_target); }
public void RemoveEventListener(GameObject _target, string _eventName, Action <SuperEvent> _callBack) { if (dic2.ContainsKey(_target)) { Dictionary <string, List <SuperFunctionUnit> > tmpDic = dic2[_target]; if (tmpDic.ContainsKey(_eventName)) { List <SuperFunctionUnit> list = tmpDic[_eventName]; for (int i = 0; i < list.Count; i++) { if (list[i].callBack == _callBack) { dic.Remove(list[i].index); list.RemoveAt(i); break; } } if (list.Count == 0) { tmpDic.Remove(_eventName); if (tmpDic.Count == 0) { SuperFunctionControl control = _target.GetComponent <SuperFunctionControl>(); control.isDestroy = true; GameObject.Destroy(control); dic2.Remove(_target); } } } } }
public void RemoveEventListener(GameObject _target) { if (dic2.ContainsKey(_target)) { SuperFunctionControl control = _target.GetComponent <SuperFunctionControl>(); control.isDestroy = true; GameObject.Destroy(control); Dictionary <string, List <SuperFunctionUnit> > tmpDic = dic2[_target]; dic2.Remove(_target); foreach (List <SuperFunctionUnit> list in tmpDic.Values) { foreach (SuperFunctionUnit unit in list) { dic.Remove(unit.index); } } } }