C# 如何处理!=和| |在c中#

C# 如何处理!=和| |在c中#,c#,unity3d,C#,Unity3d,我是c#新手,一般来说并不擅长编码。努力学习。我想让这个游戏检测我的物体何时击中物体,看看它是否击中了不是地面或终点的物体,如果击中了,则重新加载场景。首先,我尝试: public class wallCollision : MonoBehaviour { public Rigidbody rb; public Vector3 spawn; void OnCollisionEnter(Collision col) { if (col.g

我是c#新手,一般来说并不擅长编码。努力学习。我想让这个游戏检测我的物体何时击中物体,看看它是否击中了不是地面或终点的物体,如果击中了,则重新加载场景。首先,我尝试:

public class wallCollision : MonoBehaviour  
{  

    public Rigidbody rb;
    public Vector3 spawn;

    void OnCollisionEnter(Collision col)
    {
        if (col.gameObject.name != "Ground")
        {
            Scene scene = SceneManager.GetActiveScene(); 
            SceneManager.LoadScene(scene.name);
        }
    }
}
它起作用了,所以我把它改成了这个,以检查它的光洁度

public class wallCollision : MonoBehaviour
{
    public Rigidbody rb;
    public Vector3 spawn;

    void OnCollisionEnter(Collision col)
    {
        if (col.gameObject.name != "Ground" || "Finish")
        {
            Scene scene = SceneManager.GetActiveScene(); 
            SceneManager.LoadScene(scene.name);
        }
    }
}
它不起作用,所以我需要帮助。我想让它像这样思考:

若物体与任何物体相撞,而这不是地面或终点,那个么


我知道我可能犯了一些简单的错误,但我不知道该寻找什么来寻求帮助,所以如果有人能帮助我,我将不胜感激。提前谢谢。

我需要你换成这样

col.gameObject.name != "Ground" && col.gameObject.name != "Finish"

不太确定,但是否存在.Equals()或类似的代码

您必须将初始值与两个测试值进行比较:

if (col.gameObject.name != "Ground" && col.gameObject.name != "Finish")
{ }
另一种选择是使用集合和
包含
,但从性能角度看,这更糟糕:

if (!(new string[] { "Ground", "Finish" }.Contains(col.gameObject.name)))
{ }

我想您需要类似于
col.gameObject.name!=“地面”&&col.gameObject.name!=“Finish”
总是会产生
true
。用户提到或完成了,所以应该是==完成谢谢。第一个很有魅力!