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

时间:2018-12-24 12:55:07

标签: c# unity3d

我对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);
        }
    }
}

没有用,这就是为什么我需要帮助。我希望它像这样思考:

如果物体与任何东西碰撞而没有被磨碎或磨碎,那么

我知道我可能在犯一些简单的错误,但是我不知道该寻找什么来寻求帮助,因此如果有人可以帮助,将不胜感激。预先感谢。

2 个答案:

答案 0 :(得分:0)

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

if (col.gameObject.name != "Ground" && col.gameObject.name != "Finish")
{ }

另一种选择是使用集合和Contains,但是从性能的角度来看更糟:

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

答案 1 :(得分:-1)

我需要您改成这样

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

不太清楚,但是是否有.Equals()或类似的代码