internal void AddBehavior(BaseBehaviour behaviour)
 {
     if (!behaviour.IsAlive())
     {
         m_BehaviourOrdered.Add(behaviour);
         m_AddBehavioursCache.Add(behaviour);
     }
     else
     {
         MDebug.LogError("Core"
                         , $"AddBehavior ({behaviour.GetName()}) failed. It already alive.");
     }
 }
 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.");
     }
 }