/// <summary> /// 派遣单位 /// </summary> protected void DispatchUnits() { //TODO mid var sendRoad = Road.Mid; var sendArray = new int[aiAvailableUnits.Length]; // int maxSendIndex = 0; for (var i = 0; i < sendArray.Length; i++) { sendArray[i] = GetUnitMaxSend(aiAvailableUnits[i]); } Unit sendUnit; var probability = Random.Range(0f, 1f); if (probability < 0.5f) { sendUnit = aiAvailableUnits[Array.IndexOf(sendArray, sendArray.Max())]; } else { sendUnit = aiAvailableUnits[Random.Range(0, aiAvailableUnits.Length)]; } //消耗木材、食物资源计算 var foodAndWoodSend = aiPlayer.Food / sendUnit.costFood > aiPlayer.Wood / sendUnit.costWood ? aiPlayer.Wood / sendUnit.costWood : aiPlayer.Food / sendUnit.costFood; //派遣数量随机 var foodAndWoodSendNumber = Random.Range((int)Mathf.Ceil(foodAndWoodSend * 0.5f), foodAndWoodSend); //消耗金矿资源计算 var goldSend = aiPlayer.Gold / sendUnit.costGold; //派遣数量随机 var goldSendNumber = Random.Range((int)Mathf.Ceil(goldSend * 0.5f), goldSend); var costFood = foodAndWoodSendNumber * sendUnit.costFood; var costWood = foodAndWoodSendNumber * sendUnit.costWood; var costGold = goldSendNumber * sendUnit.costGold; aiPlayer.ChangeResource(GameResourceType.Food, -costFood); aiPlayer.ChangeResource(GameResourceType.Wood, -costWood); aiPlayer.ChangeResource(GameResourceType.Gold, -costGold); aiPlayer.SetUnits(RoadToTransform(sendRoad).position, Array.IndexOf(aiAvailableUnits, sendUnit), sendRoad, goldSendNumber + foodAndWoodSendNumber); }