public void DoPlayAttack_Melee(EAnimatorParam_MeleeType eMeleeType)
    {
        if (_eWeaponType != EWeaponType.Melee)
        {
            return;
        }
        if ((_eCharcaterModelOption & EFlagCharacterModelOption.MoveStop_OnAttack) == EFlagCharacterModelOption.MoveStop_OnAttack)
        {
            _pControl_Animator.DoSetParam_float(EAnimatorParam.Speed_f, 0f);
        }

        _pControl_Animator.DoSetParam_Int(EAnimatorParam.MeleeType_int, (int)eMeleeType);
        _bIsPlaying_Attack = true;
    }
    // ========================================================================== //

    /* protected - [abstract & virtual]         */

    /* protected - [Event] Function
     * 자식 객체가 호출                         */

    /* protected - Override & Unity API         */

    protected override void OnAwake()
    {
        base.OnAwake();

        _pCollider         = GetComponent <Collider>();
        _pControl_Animator = GetComponent <CAnimatorController>();
        _pControl_Animator.DoInitAnimator();

        _pControl_Animator.DoSetParam_Int(EAnimatorParam.MeleeType_int, (int)EAnimatorParam_MeleeType.None);

        Renderer pRenderer = GetComponentInChildren <Renderer>();

        if (pRenderer != null)
        {
            _fModelOffsetY = pRenderer.bounds.max.y;
        }

        CCharacterWeaponGenerator pGenerator = gameObject.AddComponent <CCharacterWeaponGenerator>();

        pGenerator.DoGeneratorParts(transform);
    }