2017-02-09 3 views
0

В моей игре через определенные промежутки времени вызывается функция, которая добавляет несколько узлов в сцену (от 2 до 6 узлов). Эти отдельные узлы все одинаковы - они состоят из одной и той же модели блендера, той же самой SCNCone, одного и того же прожектора и тех же физических тел - (модель блендера низкополигональная, ничего экстремальная).Добавление и удаление нескольких узлов эффективно, без каких-либо задержек

Когда пришло время вызвать следующий интервал узлов, удаленные узлы, которые были вызваны ранее (включая их действия). Этот процесс повторяется до тех пор, пока игрок не умрет. Теперь, когда узлы удалены и новые добавлены, он создает заметную задержку примерно на секунду и не выглядит гладким.

Мне интересно, есть ли более эффективный способ добавления и удаления этих узлов, которые могли бы устранить отставание? Поскольку эти узлы все одинаково одинаковы, будет клонирование узла несколько раз лучше, чем повторное создание одного и того же узла снова и снова в цикле for?

Любые советы по эффективности или лучшей практике также будут очень признательны.

Спасибо!

Редактировать: Просто подумайте, должен ли я иметь узел в каждом требуемом месте и в основном скрывать и давать им действия, когда это необходимо, и после того, как они выполнили свою работу, исчезнут, вернутся в исходное положение положение, удалить действия и скрыть?

Это означало бы, что мне понадобится около 20 узлов в сцене в любое время, но по крайней мере вам не нужно будет добавлять больше или удалять.

ответ

1

Включить статистику.

scnView.showStatistics = YES; 

Нажмите на кнопку + в левом нижнем углу экрана на экране статистики.

Что может быть причиной задержки? Быстрые вещи для проверки:

1. Is the geometry too complex? 
2. Are the textures too large? 
3. Are there too many draw calls? 

Клонирование лучше.

1

Да, я думаю, что ваша идея в конце позволит избежать отставания. Если добавляемые узлы совпадают с удаляемыми узлами, будет более эффективно просто скрыть и сбросить их.

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

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