Unity 3d & C#,如果 gameObject != this

Unity 3d & C#, if gameObject != this

我有这个代码:

public class Gravity : MonoBehaviour
{
    GameObject[] planets;

    // Start is called before the first frame update
    void Start()
    {
        planets = GameObject.FindGameObjectsWithTag("Planet");
    }

    // Update is called once per frame
    void Update()
    {
        foreach (GameObject planet in planets)
        {
            if (planet != this)
            {
                //do things
            } 
        }
    }
}

我对 "if (planet != this)..." 有疑问,我预计会发生的情况是,如果 planets[index] == gameObject 那么 "planet != this" 将 return false。但这不起作用,我该如何解决?

this 是引用当前对象实例的关键字,在本例中为 Gravity class,因此每个 GameObject 对象不同于Gravity 实例。您可以这样做,以访问附加的 GameObject:

foreach (GameObject planet in planets)
{
   if (planet != this.gameObject)
   {
      // Do magic stuff...
   } 
}