internal void RemoveBehavior(BaseBehaviour behaviour) { if (behaviour.IsAlive()) { behaviour.SetEnable(false); behaviour.SetAlive(false); m_BehaviourOrdered.DeleteByIndex(m_BehaviourOrdered.GetIndexByKey(behaviour)); m_RemoveBehavioursCache.Add(behaviour); } else { MDebug.LogError("Core" , $"RemoveBehavior ({behaviour.GetName()}) failed. It doesn't alive."); } }
protected void OnApplicationQuit() { WaitTaskUpdate(); CollectionBehavioursForTraverse(); for (int iBehaviour = 0; iBehaviour < m_BehavioursForTraverse.Count; iBehaviour++) { BaseBehaviour behaviour = m_BehavioursForTraverse[iBehaviour]; behaviour.SetEnable(false); DisableBehaviour(behaviour); } for (int iBehaviour = 0; iBehaviour < m_BehavioursForTraverse.Count; iBehaviour++) { BaseBehaviour behaviour = m_BehavioursForTraverse[iBehaviour]; behaviour.SetAlive(false); ReleaseBehaviour(behaviour); } m_BehavioursForTraverse.Clear(); m_AddBehavioursCache.Clear(); m_RemoveBehavioursCache.Clear(); m_BehaviourOrdered.Clear(); }