public void RemoveActionByTag(int tag, Transform target) { Debug.Assert(tag != MtAction.INVALID_TAG, "Invalid tag value!"); Debug.Assert(target != null, "target can't be null!"); if (target == null || !m_dicActionElement.ContainsKey(target)) { return; } LinkedListNode <MtActionElement> element = m_dicActionElement[target]; if (element != null) { int count = element.Value.actions.Count; for (int i = 0; i < count; i++) { MtAction action = element.Value.actions[i] as MtAction; action.Stop(); if (action.Tag == tag && action.Target.Equals(target)) { RemoveActionAtIndex(i, element); break; } } } }
public void RemoveActionAtIndex(int index, LinkedListNode <MtActionElement> element) { MtAction action = element.Value.actions[index] as MtAction; action.Stop(); element.Value.actions.RemoveAt(index); if (element.Value.actionIndex >= index) { element.Value.actionIndex--; } if (element.Value.actions.Count == 0) { m_dicActionElement.Remove(action.Target); LinkedListNode <MtActionElement> nodeTemp = element.Next; m_targets.Remove(element); m_currentTarget = nodeTemp; } }