Создание нескольких объектов в одном кадре или один объект на кадр? - PullRequest
0 голосов
/ 11 апреля 2019

Идея заключается в простом создании экземпляра карты в Awake со случайными значениями.

Но вопрос в следующем: Должен ли я создать экземпляр всей карты в одном кадре (используя цикл)? или лучше создать экземпляр каждого объекта в кадре?

Потому что я не хочу разрушать баран игрока, создавая 300 игровых объектов менее чем за секунду.

Ответы [ 3 ]

1 голос
/ 11 апреля 2019

Независимо от того, выполняете ли вы все gameobjects в одном кадре или нет, они всегда будут находиться в ОЗУ одинаково. Единственный способ «испортить» чей-то баран - это создать так много gameobjects, пока не останется памяти. Учитывая, что типичный prefab в единстве имеет размер всего несколько кб, а типичный объем оперативной памяти в настоящее время составляет несколько ГБ, это займет около миллиона игровых объектов.

0 голосов
/ 12 апреля 2019

При загрузке карты вы можете сделать это асинхронно в начале входа в сцену. Таким образом, вы можете установить загрузочный экран во время загрузки. Это хороший способ сделать это, если вы делаете однопользовательскую игру. Если это многопользовательская игра, вам нужно синхронизировать ее на сервере для всех остальных игроков. Метод загрузки асинхронной сцены: SceneManager.LoadSceneAsync().

Если вы пытаетесь создать экземпляр объекта во время выполнения, потому что хотите рандомизировать определенные объекты, я бы порекомендовал загружать каждый объект, который не нуждается в рандомизации, путем входа в сцену (поэтому выкидываете их в сцену).

Вот как я истолковал твой вопрос, скажи мне, если я ошибаюсь.

0 голосов
/ 11 апреля 2019

Никогда не делайте вещи, которые зависят от кадров, никогда !! Есть некоторые исключения, когда это может быть хорошо, но в большинстве случаев это не так.

Хороший случай: - Инкрементная сборка мусора (все еще имеет недостатки)

Плохой случай: - Ваш случай, загрузка карты должна быть в начале

Почему я не должен зависеть от игрового фрейма?

  • Поскольку компьютеры имеют различную скорость вычислений, хорошим примером является Harry Potter II, игра была разработана для машин, способных работать со скоростью 30 кадров в секунду, современные машины могут запускать эту игру очень быстро, таким образом, игра в основном ускоряется, вам нужно для ручного управления процессором, чтобы сделать игру доступной.
  • Другим примером является время дельты единиц, причина, по которой вы используете его при перемещении объектов по нескольким кадрам, поскольку он учитывает скорость вычисления последних кадров

Также 300 объектов - это ничто при загрузке игры, также с точки зрения игрока:

Что лучше 10 секунд загрузки или 30 секунд 15 кадров в секунду, чем нормальная скорость (приведенный выше пример преувеличен)

...