Unity 3d & C#, если gameObject! = This - PullRequest
1 голос
/ 05 мая 2020

У меня есть этот код:

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 (pl anet! = This) ...", что, как я ожидаю, произойдет, так это то, что if planets [index] = = gameObject, тогда «pl anet! = this» вернет false. Но это не работает, как исправить?

1 Ответ

2 голосов
/ 05 мая 2020

this - ключевое слово, которое относится к экземпляру текущего объекта, в данном случае к классу Gravity, поэтому каждый объект GameObject отличается от экземпляра Gravity. Вы можете сделать что-то вроде этого, чтобы получить доступ к прикрепленному GameObject:

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