Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.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# 单个布尔值返回true,但检查两者是否都为true时返回false_C#_Boolean_Unity3d - Fatal编程技术网

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