public void InitObject(MonoBehaviour monoBehaviourObj)
        {
            UninitObject();

            _monoBehaviour = monoBehaviourObj;
            _selectable    = _monoBehaviour.GetComponent <ISelectable>();

            if (_selectable == null || !_selectable.CanSelect())
            {
                UninitObject();
                return;
            }

            _damageable         = _monoBehaviour.GetComponent <IDamageable>();
            _targetable         = _monoBehaviour.GetComponent <ITargetable>();
            _moveable           = _monoBehaviour.GetComponent <IMoveable>();
            _attackable         = _monoBehaviour.GetComponent <IAttackable>();
            _behaviorSwitchable = _monoBehaviour.GetComponent <IBehaviorSwitchable>();
            _carriable          = _monoBehaviour.GetComponent <ICarriable>();

            if (_damageable != null)
            {
                // If enemy, don't select.
                if (_targetable.IsEnemy(_targetable.TeamId))
                {
                    UninitObject();
                    return;
                }
            }

            _selectable.Select();

            _isInit = true;
        }