2015-01-17 5 views
0

Я делаю игру шутера пузыря. На одном уровне у меня около 500 пузырьков внутри их родителя. Теперь я хочу полностью или частично переместить их на Android.Как правильно перемещать родителя с сотнями детей?

Profiler в ПК:
+ Draw вызов: 18
+ FPS: 800
=> Очень гладкая на ПК.

Устройство: Nexus Profiler в Android:
+ Draw вызов: 18
+ FPS от 30 до 60

Поскольку кадр на Android не является стабильным (30 - 60), это приводит к тому, двигаясь не плавно, как я ожидал. Пожалуйста, посмотрите мой Android-профайлер.

enter image description here

enter image description here

Большое спасибо.

+0

Вы знаете, что мобильные устройства все еще много, во много раз медленнее, чем на любом настольном компьютере, верно? Из скриншотов профайлера кажется, что графика/рендеринг - это то место, где вы проводите большую часть времени, поэтому подумайте об уменьшении визуальной сложности вашего приложения. Помимо этого, без какого-либо кода, никаких дополнительных предложений не может быть сделано. – LearnCocos2D

+0

@ LearnCocos2D: Я использую tranform.position + = .... для перемещения родителя. Больше ничего. Кроме того, я не понимаю, почему camera.render занимает слишком много раз для каждого кадра. Это приводит к задержке (или встряхиванию, а не плавному) при перемещении родителя. Как вы можете видеть, в моей сцене не так много игровых объектов, не так ли? И Nexus 4 - устройство с хорошей производительностью, я думаю. – EastBK

+0

Но у вас есть 500 активных пузырьков. Каждый пузырь добавляет некоторые накладные расходы, даже если они в настоящее время не видны на экране. И 500 объектов на мобильном устройстве, особенно если у них есть физика на них (?), Это может быть довольно налогообложение. Это требует дальнейшего анализа или, по крайней мере, проб и ошибок (попробуйте удалить 400 объектов, посмотрите, поможет ли это). – LearnCocos2D

ответ

0

Вместо того чтобы двигаться геймобжекты (пузыри), я думаю, что это должно быть лучше, чтобы переместить камеру:

Camera.main.gameObject.transform.position + = дельта * Vector3.up * Time.deltaTime;

+0

Это то, о чем я думал раньше. Однако, на мой взгляд, это необходимо 2, чтобы заставить его работать. Одна из них - основная камера (показать фон, дракон ... Эти вещи не могут двигаться, как пузыри) а другой движется, чтобы увидеть эффект движущихся пузырьков. И я не знаю, с чего начать. Как объединить две камеры ...? – EastBK

+0

Вы можете использовать слои. Назначьте разные слои фона, дракона, ... и пузырьков. Затем добавьте новую камеру и в каждой камере используйте свойство «culling mask», чтобы назначить слои этой камере. –

+0

Я чувствую себя немного перспективным прямо сейчас.Позвольте мне попробовать в течение 15 минут, и я вернусь :). Заранее благодарны за Вашу помощь. – EastBK

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