我一直在想为什么这不能正常工作。我有一个列表,可以改变怪物每秒产生的概率。我想从此列表中选择一个随机加权的敌人。我在某个地方出错了,我认为它是在String path = getClass().getProtectionDomain().getCodeSource().getLocation().getFile();
boolean onWar = path.contains("WEB-INF");
区域附近。
"EnemyToSpawnNext = Enemies[sorted[T].Key].Enemie[0].EnemyPrefab;"
以下是创建概率列表的难度调整功能。
public GameObject EnemySelection()
{
var sorted = TierProbability.Select((x, i) => new KeyValuePair<int, float>(i, x)).OrderBy(x => x.Value).ToList();
List<int> idx = sorted.Select(x => x.Key).ToList();
List<float> B = sorted.Select(x => x.Value).ToList();
float P = UnityEngine.Random.Range(0, 1);
float Sum_prob = 0;
for (int T = 0; T < TotalNumberofTiers; T++)
{
Sum_prob += sorted[T].Value;
print(Sum_prob);
if (Sum_prob >= P)
{
EnemyToSpawnNext = Enemies[sorted[T].Key].Enemie[0].EnemyPrefab;
break;
}
}
return EnemyToSpawnNext;
}
答案 0 :(得分:1)
问题是你的P
float P = UnityEngine.Random.Range(0, 1);
此P始终为零
改为使用此:
float P = UnityEngine.Random.Range(0f,1f);