public void RemoveAction(Action _action) { if (_action == null) { return; } ListLinqView <GameObject> gameObjectList = _action.GetGameObjectList(); int count = gameObjectList.Count; for (int i = 0; i < count; i++) { GameObject gameObject = gameObjectList[i]; if (!(gameObject == null)) { if (this.objectReferenceSet.ContainsKey(gameObject)) { ListView <Action> listView = this.objectReferenceSet[gameObject]; listView.Remove(_action); if (listView.Count == 0) { this.objectReferenceSet.Remove(gameObject); } } else if (gameObjectList.IndexOf(gameObject) >= _action.refGameObjectsCount) { ActionManager.DestroyGameObject(gameObject); } } } MonoSingleton <ActionManager> .instance.actionList.Remove(_action); _action.Release(); }