2015-05-20 4 views
-2

У меня возникли трудности с пониманием Generics. Я пишу этот код единства. и кажется, что просто называет жесткое тело. Усталость устарела. После некоторых поисков я обнаружил, что они обновились до использования GetComponent<T>. Я понимаю, что дженерики увеличивают возможность повторного использования и облегчают кастинг. В этом случае, что такое GetComponent<T>. Это класс? Когда я говорю GetComponent<Rigidbody>(), это конструктор? Почему мне даже нужно вызвать конструктор?У меня возникли проблемы с пониманием Generics

public class Mover : MonoBehaviour { 

    public float speed; 
    private Rigidbody moverRigid; 

    // Use this for initialization 
    void Start() { 
     moverRigid = GetComponent<Rigidbody>(); 
     moverRigid.velocity = transform.forward * speed; 
    } 

    // Update is called once per frame 
    void Update() { 

    } 
} 

ответ

4

В этом случае, что GetComponent<T>. Это класс?

Нет, это не класс, это общий метод. Общий метод используется как любой другой метод, но он объявлен с параметрами. В этом случае ваш параметр равен Rigidbody. Чтобы получить дополнительную информацию об общих методах, пожалуйста, проверьте this MSDN article

Когда я говорю GetComponent(), это конструктор? Почему мне даже нужно вызвать конструктор?

Это не конструктор, это просто стандартный метод, как Start но определяется на базовом классе (обратите внимание, что Mover наследует от MonoBehaviour)

2

GetComponent<Rigidbody>() не является конструктором. Это метод класса MonoBehaviour, который возвращает значение, которое уже выполнено для типа Rigidbody.

Это объясняется в Unity's documentation.

Они известны как общие функции. Значимость, которую они имеют для сценариев , заключается в том, что вы можете указать типы параметров и/или тип возврата при вызове функции.

+0

Кажется, я возвращаю значение. Прости, если это кажется глупым. Я устанавливаю moverRigid = методу ??? –

+0

@christopher Вы устанавливаете 'moverRigid' в возвращаемое значение вызова' GetComponent () ' – Greg

Смежные вопросы