C# 单个布尔值返回true,但检查两者是否都为true时返回false
所以我有两个布尔值:C# 单个布尔值返回true,但检查两者是否都为true时返回false,c#,boolean,unity3d,C#,Boolean,Unity3d,所以我有两个布尔值:Player1Finish和Player2Finish。当玩家明确输入某一点时,他们都会转向true。代码中的所有内容都正常工作,我对它进行了测试,如果布尔值返回true,我就让它打印某些内容以供测试: if(Player1Finish == true){ print("One"); } if(Player2Finish == true){ print("Two"); } if(Player2Finish && Player1Finish){
Player1Finish
和Player2Finish
。当玩家明确输入某一点时,他们都会转向true
。代码中的所有内容都正常工作,我对它进行了测试,如果布尔值返回true
,我就让它打印某些内容以供测试:
if(Player1Finish == true){
print("One");
}
if(Player2Finish == true){
print("Two");
}
if(Player2Finish && Player1Finish){
print("Both");
}
但这些是我得到的结果:我的控制台正在打印出“一”和“两”
,但不是“两个”
。我很困惑;我搞砸了什么?我找不到任何基本的布尔问题来回答这个问题,所以如果有答案的话,如果你给我指出正确的方向,我会非常乐意阅读
除了这个小循环,代码中没有其他错误,这是唯一让我无法完成的事情。从我们在代码片段中看到的,您应该得到“一”、“二”和“二者”的输出。既然你不是,我们唯一能得出的结论就是,这个片段之外的东西正在影响它
如果将这些代码行直接添加到代码段之前,是否会获得所有三个输出
Player1Finish = true;
Player2Finish = true;
以下几点应该行得通
if (Player1Finish == true && Player2Finish == true) {
Console.Write("Both");
} else if (Player1Finish == true) {
Console.Write("One");
} else {
Console.Write("Two");
}
你们试过调试它吗?是的,我已经检查了几个脚本中的每一段代码,确保每一个输入都是正确的。这就是我缩小调试范围的地方,老实说,我对正在发生的事情一无所知。这正是您的代码,还是只是逻辑功能的表示?如前所述,在一个线程中,如果你的两个玩家变量都为真,那么你应该得到所有三个输出。这是确切的代码,除了我出于沮丧在输出中添加了一些脏话。目标不是这样,我只是做了一件简单的事情,同时我发现了哪里出了问题。打印函数调用什么来生成输出?这是一些非常奇怪的行为。我不明白为什么is应该很重要,但是将代码更改为这个会改变输出吗<代码>如果(Player1Finish){print(“一”);}如果(Player2Finish){print(“两”);}如果(Player2Finish&&Player1Finish){print(“两”);}
不,我仍然得到同样的结果。我试过几种不同的格式或书写方式,但都是一样的。在上下文中,这是一个视频游戏的脚本,被称为每帧更新。它检查玩家一个或两个是否完成,如果他们有,它会分别打印出哪个玩家完成了,如果他们都完成了,则结束关卡。我让它在一个玩家结束或者我根本无法让它结束时结束,但我需要它在两个玩家都结束时结束,这就是我如何将它缩小到布尔问题的原因。有人能告诉我为什么我的答案被标记下来吗?这没什么大不了的,但我很快就能对别人的帖子发表评论了。顺便说一句,如果我被允许发布一条评论,这个答案就会出现在评论中。这是c#中的一条命令。这在unity c中不起作用,因为您使用的是print或debug.log