Как стать автором
Обновить

Почему не Object.Instantiate?

А почему бы и нет.

Разберемся, что такой Object.Instantiate.

Обратимся к официальной документации Unity.

Эта функция создает клон объекта аналогично команде «Дублировать» в редакторе.

Instantiate(Object original);

Создание клона объекта крайне затратный по ресурсам. Измерения будут проводиться с помощью Stopwatch.

С использованием Instantiate:

void CubeInPosInstantiate()
{
			GameObject obj = Instantiate(Cube);
			obj.transform.position = new Vector3(1.25f, 0f, 0f);
}
Результат

Время выполнения блока кода 0.5647ms

И простым присвоением новой позиции:

void CubeInPosTransform()
{
			Cube.transform.position = new Vector3(1.25f, 0f, 0f);
}
Результат

Время выполнения блока кода 0.2324ms

Переместить готовый Куб очевидно будет быстрее чем создать новый и переместить его.

Вывод 1 теста

На данном примере видно, что разница составляет 0.3323ms. Просто переместить объект из точки А в точку Б быстрее в 2.43 раза, чем его создать там.

Рассмотрим более наглядный пример. Будем перемещать куб по оси Х и в последствии возвращать его обратно.

1

0,0843ms

2

0,0843ms

3

0,0849ms

4

0,0856ms

5

0,0862ms

6

0,0869ms

7

0,0875ms

8

0,0880ms

9

0,0885ms

10

0,0890ms

В среднем на выполнения уходит 0.08616ms. Попробуем сделать тоже самое, но удалять и создавать новый объект для каждого цикла перемещения. Для чистоты эксперимента создадим Prefab нашего Куба.

tempCube = Instantiate(Cube);

1

0,4222ms

2

0,7285ms

3

0,9460ms

4

1,0842ms

5

1,4340ms

6

1,6371ms

7

1,8521ms

8

2,1129ms

9

2,3629ms

10

2,6700ms

В среднем на выполнения уходит 1.3978ms. Что по сравнению с перемещением выглядит грустно. Естественно сложнее всего приходится при удалении объекта, бросить мы его там не можем. Посмотрим график.

Скорость выполнения кода для перемещения куба в 16.223 раза быстрее, чем для создания его клона. При измерении в 1 итерацию мы получили разницу в 2.43 раза, но на дистанции разница уже более очевидна.

ПС

Смысл данной статьи. Написать данную статью. Донести суть тем кто ее ищет.

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.