public void FindAvaliableEnemyUnitTypes(Weapon ExecuteUnitWeapon, List <UnitTypeInfo> ParaUnitTypeInfoList) { for (int i = 0; i < UnitTypeNum; i++) { List <Unit> AttackableUnits = new List <Unit>(); // 遍历该类型单位的每个单位并检查是否为当前攻击武器的合法攻击目标 for (int j = 0; j < UnitsOfUnitName[UnitNameOfIndex[i]].Count; j++) { if (ExecuteUnitWeapon.ValidTargetUnit(UnitsOfUnitName[UnitNameOfIndex[i]][j]) == true && UnitsOfUnitName[UnitNameOfIndex[i]][j].GetAliveState() == true) { AttackableUnits.Add(UnitsOfUnitName[UnitNameOfIndex[i]][j]); } } // 如果该类型单位中至少有一个合法的攻击单位则将该单位生成为一个单位类型信息的实例 if (AttackableUnits.Count > 0) { UnitTypeInfo NewUnitTypeInfo = new UnitTypeInfo(); NewUnitTypeInfo.SetParameter("UnitID", UnitNameOfIndex[i]); NewUnitTypeInfo.InitializeByUnitList(AttackableUnits); if (ParaUnitTypeInfoList == null) { Debug.Log("ParaUnitTypeInfoList"); } ParaUnitTypeInfoList.Add(NewUnitTypeInfo); } } }