private int randomReword(int id) {//从可获得物品中随机一个(有保底) 调该方法时意味着比得一个 int tem = Random.Range(0, 1000); string[] nums = AllUnitData.getSpoilData(id); int ratherNum = 0; for (int i = REWORD_NUM; i < nums.Length - 5; i += 2) { ratherNum += int.Parse(nums[i + 1]) * 10; if (tem < ratherNum) { return(int.Parse(nums[i])); } } tem = Random.Range(0, 2); if (tem == 0) { return(int.Parse(nums[nums.Length - 4])); } else { return(int.Parse(nums[nums.Length - 3])); } }
//-------------------计算累积奖励 private void comulativeReword(int id) { int num = 0; //最终个数 string[] spoilData = AllUnitData.getSpoilData(id); int[] nums = new int[9]; //计算数量 for (int i = 1; i < REWORD_NUM; i++) { nums[i - 1] = int.Parse(spoilData[i]); //+++奖励数量几率参数 //下标 1 2 3 4 5 6 7 8 9是个数倍率 接受1位小数 即0.5% } int tem = Random.Range(0, 1000); int ratherNum = 0; for (int i = 0; i < nums.Length; i++) { ratherNum += nums[i] * 10; if (tem < ratherNum) { tem = i; break; } } //逐个计算概率 for (int i = 0; i < tem; i++) { //添加结果 int rewordID = randomReword(id); spoils.spoils.Add(rewordID); Debug.Log("【掉落物品】" + AllUnitData.getGoodData(rewordID)[1]); } //给钱 spoils.coinType = int.Parse(spoilData[spoilData.Length - 1]); spoils.coins = (int)(float.Parse(spoilData[spoilData.Length - 2]) * (1 - Random.Range(-GameData.Data.CoinMovement, GameData.Data.CoinMovement))); Debug.Log("【钱】" + spoils.coins); }