Какой из них следует использовать «this» или «gameObject» при доступе к GameObject, к которому присоединен производный класс MonoBehaviour? - PullRequest
0 голосов
/ 18 июня 2019

Я изучаю Unity3D с нуля. Я обнаружил, что мы можем получить доступ к GameObject, к которому прикреплен скрипт, объявляющий производный класс MonoBehaviour, следующим образом.

  • через this
  • через gameObject
  • через личное поле с атрибутом [SerializedField].

Тривиальный код

using UnityEngine;

public class Ball : MonoBehaviour
{

    [SerializeField]
    private GameObject ball;

    void Update()
    {
        Vector3 force = new Vector3
        {
            x = 5 * Input.GetAxis("Horizontal"),
            y = 0,
            z = 5 * Input.GetAxis("Vertical")
        };

        //gameObject.GetComponent<Rigidbody>().AddForce(force);
        //this.GetComponent<Rigidbody>().AddForce(force);
        ball.GetComponent<Rigidbody>().AddForce(force);
    }
}

Вопрос

Из этих трех я только хочу знать, когда нам нужно выбрать this вместо gameObject, а также наоборот?

1 Ответ

0 голосов
/ 18 июня 2019

Это разные вещи!

Когда вы используете this, вы ссылаетесь на Это ключевое слово , которое в данном случае говорит о MonoBehaviour, который вы пишете.

Когда вы используете gameObject, вы говорите о gameobject, в котором содержится написанное вами поведение. gameObject может содержать MonoBehaviours.

Так, например, если у вашего MonoBehaviour есть свойство, вы можете ссылаться на него с помощью "this". И если gameobject имеет физический компонент, вы можете использовать GetComponent для доступа к нему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...