Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果语句为真,为什么代码会转到else?_C#_Unity3d - Fatal编程技术网

C# 如果语句为真,为什么代码会转到else?

C# 如果语句为真,为什么代码会转到else?,c#,unity3d,C#,Unity3d,我试图通过提高等级来制造我的障碍,但由于某种原因,当我在游戏中测试它时,它并没有按照我想要的方式工作 假设我从26级开始比赛 我正常玩到36级,即使35级也能正确产卵,但当玩家在36级时,代码进入else语句,而不是else if 这是我按级别生成障碍物的代码 if (curentLevel > 0 && curentLevel < 10) { SpawnSpawner(0); } else if (curentLevel > 10 &&

我试图通过提高等级来制造我的障碍,但由于某种原因,当我在游戏中测试它时,它并没有按照我想要的方式工作

假设我从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 
{

}
if(currentlevel>0&¤tlevel<10)
{
产卵器(0);
}
否则,如果(治疗水平>10和治疗水平<35)
{
产卵器(1);
}
否则,如果(治疗水平>35和治疗水平<50)
{
产卵器(2);
}
否则,如果(治疗水平>50和治疗水平<60)
{
产卵器(5);
}
其他的
{
}
在else语句中执行的代码在我的示例中是空的,正好在36级

我希望有解决办法,因为我告诉程序检查curentlevel是否高于35(36级),以及curentlevel是否小于50(36级),所以我不知道为什么不执行以下代码:

 else if (curentLevel > 35 && curentLevel < 50)
else if(currentlevel>35和¤tlevel<50)

我打赌我做错了什么,但我希望有人能给我指出解决方案,并解释为什么程序不能按照我的思维方式工作,非常感谢…

根据@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)
{
产卵器(0);
}
否则,如果(治疗水平<35)
{
产卵器(1);
}
否则,如果(治疗水平<50)
{
产卵器(2);
}
否则,如果(治疗水平<60)
{
产卵器(5);
}
其他的
{
}
if(currentLevel>10)
是冗余的,如果它在
currentLevel<10
中没有计算
true
,那么在下一个
中肯定会是10或更多,否则如果


如果必须使用特定的范围,则必须注意在条件中包括所有级别,如@BACON writes,以及当前条件,因为
10<10==false
&
10>10==false
,所以您要覆盖当前级别1-9、11-34、36-49和51-59。您需要在其中一个条件中包含第10级,如
10。代码不需要在每行中进行>比较。正如我读到的,如果currentlevel=10、35或50,它将失败。36-应该可以,所以我不知道。你只需要调试你自己的程序。代码看起来很好。如果当您处于36级时,
currentLevel==35
,它必须进入
else
块,因为其他表达式的计算结果都不是真的……哇,是的-我错了-鲁齐姆是正确的。你检查的是35,所以不要检查35。(10、35和50)你读了@Ruzihm解释的解决方案了吗?啊,这样就可以这样工作了。谢谢你指点我和其他社区成员。泰!