Оптимизация инстантиэйт
|
|
zaicev9797 | Дата: Среда, 17 Июля 2013, 06:58 | Сообщение # 1 |
AbRaKaDaBrA
Сейчас нет на сайте
| У меня возникла проблема. Делаю игру про космос. Сделал имитацию боя для теста производительности. Пока нажата кнопка у меня 32 обьекта которые по 4 шт. Находятся в связи с 8-ю родителями инстансят с разной скоростью каждый(от 0.2 до 0.7 сек) по 1 обьекта. Таким образом одновременно может инстанситься от 8и до 32, а за секунду до 200 обьектов. Когда начинаю стрелять игра начинает жутко лагать, причем лагают не пули( когда я отпускаю кнопку, все созданные пули еще летят, но игра разлагивается). Использую ф-ю инстантиэйт и ломаную 34-ю
проект Mysterious Space. The losted moment
|
|
| |
NEBR | Дата: Среда, 17 Июля 2013, 08:58 | Сообщение # 2 |
почти ветеран
Сейчас нет на сайте
| zaicev9797, не представляю зачем нужно создавать 200 объектов в секунду, но если это так необходимо, то тебе нужно научится делать пулинг объектов. Погугли.
King Size #Gamiron12
|
|
| |
zaicev9797 | Дата: Среда, 17 Июля 2013, 09:28 | Сообщение # 3 |
AbRaKaDaBrA
Сейчас нет на сайте
| Ну там может и не 200 но 100 это точно. А гуглить с мобилы весьма затруднительно, может есть еще какиенибудь варианты
проект Mysterious Space. The losted moment
|
|
| |
robertono | Дата: Среда, 17 Июля 2013, 11:36 | Сообщение # 4 |
Чокнутый Кот
Сейчас нет на сайте
| Сделай спрайты или 2D текстуру. Зачем модель..
|
|
| |
NEBR | Дата: Среда, 17 Июля 2013, 14:42 | Сообщение # 5 |
почти ветеран
Сейчас нет на сайте
| zaicev9797, гуглить с мобилы нормально. Всяко лучше чем сидеть на форуме и ждать пока за тебя все скрипты напишут. Благо что тебе подсказали в каком направлении копать - пулинг объектов
King Size #Gamiron12
Сообщение отредактировал NEBR - Среда, 17 Июля 2013, 14:44 |
|
| |
sinoptis | Дата: Среда, 17 Июля 2013, 16:54 | Сообщение # 6 |
почетный гость
Сейчас нет на сайте
| Искать ничего и не нужно.
|
|
| |
zaicev9797 | Дата: Четверг, 18 Июля 2013, 15:27 | Сообщение # 7 |
AbRaKaDaBrA
Сейчас нет на сайте
| Всем большое спс Добавлено (18.07.2013, 14:42) --------------------------------------------- Так, вобщем я скрипт пиксая переписал, вроде все работает, при начале игры пул с неактивными пулями создается, а при начале стрельбы постепенно сокращается(пули у меня в него обратно не возвращаются),НО лагает еще больше, также пока нажата кнопка стрельбы, причем, когда пул заканчивается, лагать начинает меньше. Лог никаких ошибок не выдаёт, сам скрипт проверл, вроде все правильно??? В чем дело? Добавлено (18.07.2013, 15:27) --------------------------------------------- Еще заметл чем меньше размер пула, тем меньше лаги
проект Mysterious Space. The losted moment
|
|
| |
sinoptis | Дата: Пятница, 19 Июля 2013, 09:28 | Сообщение # 8 |
почетный гость
Сейчас нет на сайте
| По идее пули нужно возвращать обратно в пул. Пул объектов служит для того, чтобы заранее создать на сцене определенное количество пуль(например) , выделить для них память и использовать по кругу эти пули. Это помогает избежать утечки памяти при многократном инстансе и удалении объектов. То что вы сделали, по сути, не имеет смысла, вы просто заранее создали пули, а потом их уничтожили. Вам необходимо при коллизии пули возвращать ее обратно в пул. Насчет лагания, вы видимо пул сделали огроменный, что он столько памяти занял, либо у вас пули такие тяжелые . И соответственно чем меньше пул тем меньше он занимает памяти.
|
|
| |
pixeye | Дата: Пятница, 19 Июля 2013, 09:43 | Сообщение # 9 |
Red Winter Software
Сейчас нет на сайте
| Когда пул пустой, то он использует Instantiate чтобы создать объект ( либо в начале когда ты создаешь сразу готовый пул, либо в процессе ). Если невозращать объект в пул, то он будет бесконечно увеличиваться.
Для решения этой беды можно сделать что-то вроде этого. ( Если например точно знаешь через какое время загонять объект в пул )
Код public class poolHandler : MonoBehaviour {
public float timer = 0.0f;
public void OnEnable () {
StartCoroutine (coUpdate ()); }
IEnumerator coUpdate () {
yield return new WaitForSeconds(timer); _твойПУЛ.Unspawn (gameObject);
}
}
ACTORS - мой фреймворк на Unity Until We Die - игра над которой работаю
|
|
| |
zaicev9797 | Дата: Пятница, 19 Июля 2013, 18:10 | Сообщение # 10 |
AbRaKaDaBrA
Сейчас нет на сайте
| Ну я вобщемто частично эту проблему решил. Я просто пули собирал прямо в юне из 5-и плейнов и удочерял каждую к пустому обьекту, таким образом каждая пуля состаяла аж из 6-и обьектов. А теперь пули я в блендере собрал, но уже из 5-и трианглов. Теперь вместо 6-и кораблей у меня с такимиже примерно лагами в эдиторе(6-8 фпс) 64 корабля пуляют, а ексешник и вовсе не лагает(самое маленькое фпс 15) производительность аж больше чем в 10 раз увеличилась. А пул так и не улучшает работоспособность. Но мне и этого вполне хватает. 30 кораблей одновременно стреляющих на поле боя значит всего корблей в 4-5 раз больше, а этого предостаточно для полномасштабного космического сражения. Гы
проект Mysterious Space. The losted moment
|
|
| |
pixeye | Дата: Пятница, 19 Июля 2013, 20:11 | Сообщение # 11 |
Red Winter Software
Сейчас нет на сайте
| Цитата (zaicev9797) Ну я вобщемто частично эту проблему решил. Я просто пули собирал прямо в юне из 5-и плейнов и удочерял каждую к пустому обьекту, таким образом каждая пуля состаяла аж из 6-и обьектов. А теперь пули я в блендере собрал, но уже из 5-и трианглов. Теперь вместо 6-и кораблей у меня с такимиже примерно лагами в эдиторе(6-8 фпс) 64 корабля пуляют, а ексешник и вовсе не лагает(самое маленькое фпс 15) производительность аж больше чем в 10 раз увеличилась. А пул так и не улучшает работоспособность. Но мне и этого вполне хватает. 30 кораблей одновременно стреляющих на поле боя значит всего корблей в 4-5 раз больше, а этого предостаточно для полномасштабного космического сражения. Гы
я так понимаю речь идет о космических кораблях:) Я бы посоветовал тебе пули делать партикалами. Это дешевле и оптимизированнее
СЛедует заметить что ПУЛ сам по себе НЕ улучшает производительность, наоборот он берет на себя ресурс:) Однако благодаря нему можно снизить частоту появления сборщика мусора ( а вот это иногда приводит к лагам )
ACTORS - мой фреймворк на Unity Until We Die - игра над которой работаю
|
|
| |
zaicev9797 | Дата: Суббота, 31 Августа 2013, 18:27 | Сообщение # 12 |
AbRaKaDaBrA
Сейчас нет на сайте
| Странно. Почемуж тогда при вопросе "Как опти- ть инстантиэт", всегда отправляют на гуглинг пула? и ещё вопрос: этот скрипт нормально с прочими жс взаимодействует?
проект Mysterious Space. The losted moment
|
|
| |
seaman | Дата: Суббота, 31 Августа 2013, 19:17 | Сообщение # 13 |
старожил
Сейчас нет на сайте
| Не путайте "Улучшение производительности" и "оптимизацию Instantiate". Хотя, конечно, они зависят друг от друга. Если вы нормально используете пул - Instantiate вызывается только при старте приложения. Следовательно в дальнейшем ее вообще нет! И как она может влиять на производительность? Перемещение объекта из пула в нужное место и обратно - совершенно не затратные операции. Следовательно затраты могут быть только на само обслуживание пула (типа поиска нужного объекта в списке). Ну а эти затраты напрямую зависят от реализации и прямоты рук. Да, Вы это читали?- ГСУП
Сообщение отредактировал seaman - Суббота, 31 Августа 2013, 19:30 |
|
| |
zaicev9797 | Дата: Суббота, 31 Августа 2013, 20:17 | Сообщение # 14 |
AbRaKaDaBrA
Сейчас нет на сайте
| Я кокрас именно этот пул и использовал Добавлено (31.08.2013, 20:17) --------------------------------------------- И лаги всёравно именно при инстансе
проект Mysterious Space. The losted moment
|
|
| |
Undead | Дата: Воскресенье, 01 Сентября 2013, 00:56 | Сообщение # 15 |
NeoAxis User
Сейчас нет на сайте
| Ты, "кокрас", жутко тупишь. При использований пула объектов не должны инстаньситься объекты, они берутся из пула, а при уничтожении туда возвращаются.
Вcем зла.
|
|
| |
zaicev9797 | Дата: Воскресенье, 01 Сентября 2013, 07:35 | Сообщение # 16 |
AbRaKaDaBrA
Сейчас нет на сайте
| У меня они в начале и не инстансятся- пока пул не закончится(в это время и лаги самые сильные), но постепенно, по мере того как сокращается пул, лаги уменьшаются. И ещё, как мне в жабе этот "Пулс" импортировать, ( скрип то я переписывал отсюда, а он на шарпе), название в своём скрипте я точно правильно написал а он не импортируется
проект Mysterious Space. The losted moment
|
|
| |