Правильный способ создания экземпляра GameObject?

Итак, у меня есть дилемма о правильном способе создания сборного игрового объекта в Unity С#.

Вот 2 примера кода

Пример 1:

public Transform musicPrefab;
GameObject mManager = (GameObject)Instantiate(musicPrefab,transform.position, Quaternion.identity); 

Пример 2:

public Transform musicPrefab;
Object mManager = Instantiate(musicPrefab,transform.position, Quaternion.identity);

Но создание экземпляра как объекта также работает, так какой же путь правильный?


person Shame123    schedule 28.01.2015    source источник
comment
GameObject должен иметь свои специфические методы, которых нет в Object.   -  person Arthur Eirich    schedule 28.01.2015


Ответы (1)


Тип object слишком общий. На самом деле это не имеет особого смысла, потому что вы не сможете сделать ничего значимого с object внутри Unity3D. Когда вы создаете префаб, вы обычно ожидаете создать GameObject (есть ли ситуация, когда вы на самом деле не получаете GameObject?? Я лично никогда не сталкивался с таким сценарием...), так что это должно быть правильным путем. GameObject имеет множество свойств и методов, которые вы можете использовать. Вы должны были бы привести результат к GameObject в какой-то более поздний момент в любом случае...

person walther    schedule 28.01.2015
comment
Это объясняет, поэтому я всегда должен использовать GameObject при создании экземпляра из-за свойств. Получил это сейчас, так что объект бесполезен. - person Shame123; 28.01.2015
comment
Вам не всегда нужно создавать экземпляр как GameObject... Скажем, у вас есть класс Item с определенными методами, к которым вы хотите получить доступ. Вы можете сделать Item item = Instantiate(itemPrefab, positionOfItem, rotateOfItem) as Item; таким образом, вам не нужно использовать метод GetComponent() при попытке доступа к скрипту элемента в вашем игровом объекте. - person Savlon; 31.01.2015