我正在尝试通过关卡改进产生障碍,但是由于某些原因,当我在游戏中对其进行测试时,它并不能达到我想要的效果。
可以说我从26级开始比赛。
我可以正常玩到36级,即使35级也可以正确生成,但是当玩家完全达到36级时,代码会进入else语句,否则不会进入else if ..
这是我的代码,用于按级别生成障碍物。
if (curentLevel > 0 && curentLevel < 10)
{
SpawnSpawner(0);
}
else if (curentLevel > 10 && curentLevel < 35)
{
SpawnSpawner(1);
}
else if (curentLevel > 35 && curentLevel < 50)
{
SpawnSpawner(2);
}
else if (curentLevel > 50 && curentLevel < 60)
{
SpawnSpawner(5);
}
else
{
}
执行else语句中的代码,在我的示例中,该代码在36级完全为空。
我希望有一个解决方案,为什么,因为我告诉程序检查当前水平是否高于36上的35,如果水平小于36上的50,那么我不知道为什么不这样做执行此代码:
else if (curentLevel > 35 && curentLevel < 50)
我敢打赌我做错了,但我希望有人能指出解决方案,并解释为什么程序在我的思维方式中不起作用,非常感谢...
答案 0 :(得分:2)
根据@Ruzihm在评论中的解释,您正在检查是否小于35并且大于35,因此,当currentLevel完全等于35时,它将在任何条件下都不为真。
根据评论中@DavidFreeman的回答,解决方案-解决您问题的方法是使代码的复杂度降低:
if (curentLevel < 10)
{
SpawnSpawner(0);
}
else if (curentLevel < 35)
{
SpawnSpawner(1);
}
else if (curentLevel < 50)
{
SpawnSpawner(2);
}
else if (curentLevel < 60)
{
SpawnSpawner(5);
}
else
{
}
if (currentLevel > 10)
是多余的,如果它不对true
中的currentLevel < 10
求值,那么在下一个else if
中肯定是10或更多。
如果必须使用特定范围,则必须注意将所有级别都包括在条件中,例如@BACON写入,当前条件将覆盖currentLevel 1-9、11-34、36-49和51-59,因为10 < 10 == false
和10 > 10 == false
。您需要在其中一个条件中包含第十级,例如10 <= 10 == true