public override void ExcuteBattleOperation(Unit ExecuteUnit, BattleInfoSet ParaBattleInfoSet, BattleSequence ParaBattleSequence)
    {
        // 先锁定若干攻击单位
        for (int i = 0; i < TargetNum; i++)
        {
            // 将武器使用单位传入根据单位所有者来寻找敌对单位
            // 将武器本身引用传入是要根据武器的目标筛选标旗来选择合适的攻击单位类型
            if (ParaBattleInfoSet == null)
            {
                Debug.Log("ParaBattleInfoSet");
            }
            if (ExecuteUnit == null)
            {
                Debug.Log("ExecuteUnit");
            }


            List <UnitTypeInfo> EnemyUnitTypeList = ParaBattleInfoSet.FindAvaliableEnemyUnitTypes(ExecuteUnit, this);

            if (EnemyUnitTypeList == null)
            {
                Debug.Log("EnemyUnitTypeList");
            }

            if (EnemyUnitTypeList.Count > 0)
            {
                // 使用武器的单位类型选择器先选择一个单位类型
                UnitTypeInfo TargetUnitType = WeaponTargetUnitTypeSelector.ExecuteSingleSelection(EnemyUnitTypeList);

                // 再使用武器的单位选择器选择一个攻击目标单位
                Unit TargetUnit = WeaponTargetUnitSelector.ExecuteSingleSelection(TargetUnitType.GetContainUnit());

                // 再对攻击单位执行若干次武器开火效果
                for (int j = 0; j < MultipleAttacks; j++)
                {
                    Debug.Log(ExecuteUnit.GetUnitOwner() + " attack " + TargetUnit.GetUnitOwner());
                    WeaponEffect.ExcuteEffect(ExecuteUnit, TargetUnit, ParaBattleInfoSet, ParaBattleSequence);
                }
            }
            else
            {
                //此时没有敌方单位可以被攻击了
            }
        }

        // 可以再添加先进行多重攻击再进行多目标锁定的攻击模式
    }