C# 我的“if”语句未按预期工作

C# 我的“if”语句未按预期工作,c#,if-statement,unity3d,swipe,C#,If Statement,Unity3d,Swipe,在我的Android Unity C游戏中,我想检测到离角色最近的游戏对象何时是我在寻找的左边的,如果游戏玩家没有在屏幕上向左滑动swipeLeft,我想在我的代码中更改一个名为strike的值。但它不能正常工作 当Im在游戏视图中时,leftSwipe值不会在每次移除if函数时都起作用,strike也不会发生任何变化。我想知道如何解决这个问题,或者是否有其他方法来解决这个问题 以下是if声明: if ((closestPlatform = left) && (leftSwipe

在我的Android Unity C游戏中,我想检测到离角色最近的游戏对象何时是我在寻找的左边的,如果游戏玩家没有在屏幕上向左滑动swipeLeft,我想在我的代码中更改一个名为strike的值。但它不能正常工作

当Im在游戏视图中时,leftSwipe值不会在每次移除if函数时都起作用,strike也不会发生任何变化。我想知道如何解决这个问题,或者是否有其他方法来解决这个问题

以下是if声明:

if ((closestPlatform = left) && (leftSwipe = false)) { strike = 1; }
以下是整个C脚本:

=是分配这是比较

if ((closestPlatform = left) && (leftSwipe = false)) { strike = 1; }
这将始终为false,因为它将false赋值给leftswip,然后将其用作&&的操作数

你本想写的

if ((closestPlatform == left) && !leftSwipe) { strike = 1; }
请注意,将布尔值与真值和假值进行比较是一种拙劣的风格。与其说ifx==true,不如说如果x。你不会说下雨的说法是否属实,然后关上窗户。你只要说如果下雨就关上窗户。如果x==false,就说if!十,。你不会说如果下雨的说法是错误的,那就打开窗户。你会说如果不下雨,就打开窗户。保持简单,你会犯更少的错误

=是分配这是比较

if ((closestPlatform = left) && (leftSwipe = false)) { strike = 1; }
这将始终为false,因为它将false赋值给leftswip,然后将其用作&&的操作数

你本想写的

if ((closestPlatform == left) && !leftSwipe) { strike = 1; }

请注意,将布尔值与真值和假值进行比较是一种拙劣的风格。与其说ifx==true,不如说如果x。你不会说下雨的说法是否属实,然后关上窗户。你只要说如果下雨就关上窗户。如果x==false,就说if!十,。你不会说如果下雨的说法是错误的,那就打开窗户。你会说如果不下雨,就打开窗户。保持简单,你会犯更少的错误。

你使用的是作业,而不是比较

if ((closestPlatform = left) && (leftSwipe = false)) { strike = 1; }

替换为==。

您使用的是赋值,而不是比较

if ((closestPlatform = left) && (leftSwipe = false)) { strike = 1; }

将=替换为==。

您使用的是赋值运算符,而不是比较运算符

if ((closestPlatform == left) && (leftSwipe == false)) { strike = 1; }

您使用的是赋值运算符,而不是比较运算符

if ((closestPlatform == left) && (leftSwipe == false)) { strike = 1; }

在C语言中,使用公共字段通常被认为是不好的做法。所有这些字段都应标记为private。要使它们显示在unity检查器中,请在其上放置[SerializeField]属性。如果需要在类之外访问它们中的任何一个,请将它们包装在属性中。这样,如果您需要在修改属性时发生某些事情,那么在整个项目中不必更改代码就可以很容易地进行更改。在C语言中,使用公共字段通常被认为是不好的做法。所有这些字段都应标记为private。要使它们显示在unity检查器中,请在其上放置[SerializeField]属性。如果需要在类之外访问它们中的任何一个,请将它们包装在属性中。这样,如果您需要在修改属性时发生某些事情,则可以轻松地进行更改,而无需在整个项目中更改代码。谢谢您的帮助。@Terminal56:不客气。如果你的问题有答案,请将其中一个答案标记为已回答你的问题。这样人们就知道不要来回答这个问题。谢谢你的帮助。@Terminal56:不客气。如果你的问题有答案,请将其中一个答案标记为已回答你的问题。这样,人们就知道,不要来问这个问题并试图回答它。