Как сделать счетчик фпс в юнити
Добавил пользователь Владимир З. Обновлено: 04.10.2024
Делаю новый прожект, ставлю туда куб, лампочку, куб скриптую чтобы крутился - всё.
Билди хоть на андроид, хоть на комп, хоть так запускай - фпс так-то ровный, но периодически (в основном раз в секунду, иногда как-то бессистемно) происходит какой-то микро-фриз. Этот микрофриз при любом фпс ломает восприятие, потому что уже всё не плавно. И в 3.5.7, и в 4.3.4 - всё одно. У меня бесплатный, но на форумах юнити даже люди с Про о том же пишут. На компе оно ещё терпимо, так как працесар всё ж мощный, рывок не сильно заметен, но на андроиде, хоть и тегра3, уже бесит (а там и сеть выключал, и режим отладки, все программы другие закрывал).
И как люди с этим живут? Это как-то решается или это такая милая особенность?
скорее всего сборщик мусора просыпается. если так, то не лечится.
Так чё собирать?
Во-первых, спецом не использую Ц-решотку, всё в ихнем яваскрипте (не знаю правда, как там мусор собирается вообще).
Во-вторых, в приведённом примере с кубом ничего нового не объявляется в процессе.
А сам же движок у них типо в Ц-плюс-плюсе, там же всё должно быть так волшебно и эффективно?
ну хер его знает, что там собирать - какие-нить внутренние штуки движка, ибо пустой билд 10-15 Мб на айфон/андроид весит. вообще, я юнити не уважаю, может поклонники лучше объяснят.
BingoBongo
> скорее всего сборщик мусора просыпается. если так, то не лечится.
BingoBongo
> ну хер его знает, что там собирать
Приятно слышать объяснения специалиста.
yaapelsinko
Это действительно возможно сборщик мусора,но слишком быстрая частота. Либо ты выжираешь память очень быстро и он вынужден постоянно делать Full GC, что намекает что ты неправильно создаешь объекты, либо тут что-то другое. Без профайлера не понять.
Iskander
> Приятно слышать объяснения специалиста.
я просто так выражаюсь в свободной форме, свою мысль донес. давай теперь в твоем мусоре покопаемся:
>Это действительно возможно
специалист.
>ты неправильно создаешь объекты,
ТС делает чистый проект с крутящимся кубом (скорее всего создает в редакторе). как это можно сделать неправильно?
специалист.
>либо тут что-то другое
специалист.
очков спецЫалиста набрано 3 из 3. приятно?
yaapelsinko
> куб скриптую чтобы крутился - всё.
стоит показать скрипт.
Я конечно не программист. но вы пробовали отключать Vsync? или наоборот включать в обе позиции. вот сколько работаю в Юнити как левелщик - ну вот жопой чую что он там очень странный, не такой как все :))
BingoBongo
> как это можно сделать неправильно?
Откуда я знаю? Я ведь код не видел, поэтому и весь мой пост сплошные предположения. Я же не такой крутой спец как ты, чтобы не видя кода автора и не зная что там собирать делать категоричные заявления.
Как крутишь куб то? Открой профайлер и посмотри, там цветным по серому все будет нарисовано.
Разве профайлер в бесплатной версии есть?
yaapelsinko
Поидее это нормальная ситуация. Скорее всего это драйвер.
Сколько фпс у тебя?
BingoBongo
ну хер его знает, что там собирать - какие-нить внутренние штуки движка, ибо пустой билд 10-15 Мб на айфон/андроид весит. вообще, я юнити не уважаю, может поклонники лучше объяснят.
Ты просто не умеешь его готовить. Если использовать известные оптимизации и техники, можно получать качественный билд.
Ну и надо понимать что первые 10 мб билда это как бы плеер, а не ресурсы. дальше размер будет расти медленнее.
kardinal
> Ты просто не умеешь его готовить. Если использовать известные оптимизации и
> техники, можно получать качественный билд.
> Ну и надо понимать что первые 10 мб билда это как бы плеер, а не ресурсы.
> дальше размер будет расти медленнее.
да мне пофиг что там весит 10 Мб, это нефига ненормально! и я с твоих слов понял, что не лечится. тот же скачек фпс у ТС (кстате, у меня в проектах похожая херня, только не так часто) - это недостаток оптимизации?
кстать, у меня предложение - через личку обменяться ссылками на проекты на юнити (ты мне свои, я тебе свои), которые лежат в открытом доступе в сторах.
и еще аргумент - посмотри Hearthstone от близардов. он даже на 3м айпаде иногда люто лагает. думаешь, не сумели приготовить?
Это весь код, который есть в проекте. Даже не в ц-решотке, как видно.
ФПС много, а как их может быть мало при такой сложной сцене. Я, однако, ограничиваю (точнее - не меняю ограничения) через настройки качества, дабы была вертикальная синхронизация. Ввиду того, что метод абдейт вызывается на каждом кадре и только от частоты кадров зависит, игры с шагом времени тут тоже ничего не меняют.
Профилера у меня нет, вот ещё, отдам я 3 штуки баксов за движок, который плавно вращать куб не может.
Как игроку, отслеживание FPS жизненно важно для измерения производительности вашего компьютера и игры. Если он работает слишком быстро, вы можете увеличить графику, если игра тормозит, снизьте качество графики, чтобы получить приемлемую частоту кадров. Он также определяет, как работает ваша система, и нужно ли вам обновить графический процессор или все оборудование.
Если вы играете в многопользовательские игры, счетчик FPS очень полезен, чтобы увидеть, как игра работает, или если вы хотите похвастаться этим перед друзьями, показывая им производительность, которую дает ваша новая видеокарта. Если вы не знаете, как включить счетчик FPS, и ищете гибкое руководство, мы опишем каждый метод простым и понятным образом, как переключать счетчик FPS.
Как включить внутриигровой счетчик FPS
Запустите игру по вашему выбору из Steam, и в процессе игры вы увидите на экране счетчик FPS, в зависимости от того, где вы его разместили.
Включите счетчик FPS в Windows 10!
Вы также можете включить счетчик FPS без Steam, и если вы играете в игры для Windows и хотите отслеживать FPS, все, что вам нужно сделать, это одновременно нажать клавиши Windows + G. Это запустит игровую панель Windows на вашем экране, под плиткой производительности вы можете увидеть FPS игры прямо здесь. Щелкните значок булавки на панели производительности, и он покажет вам счетчик FPS, пока вы играете в свою игру. Вы также можете открепить счетчик FPS, нажав клавиши Windows + G.
Самое интересное в этом методе заключается в том, что вы можете настроить внешний вид вашего счетчика FPS и то, как вы хотите, чтобы он отображался. Вы можете удалить плитки ЦП или ГП и разместить счетчик FPS в любом месте, перетащив его в нужное место.
Предлагаю вариант решения самой мерзкой проблемы с проседанием FPS, когда изображение рендерится "рывками"! Пробовал на патче 1.3.0.
Сразу оговорюсь, что этот вариант поможет только тем, у кого средний FPS играбельный (на уровне 30 кадров), а не "стабильные 9")) Тут и "припарки" не помогут.
Для этого в настройках графики в пункте меню "Оконный режим" поставьте параметр "рястянуть", после чего сохраните и перезапустите игру! После перезапуска игра каждый раз какое-то время "адаптируется" и FPS идет значительно плавнее!
P.S. Только не спрашивайте, как это объяснить логически)) Никак) Продукт по-прежнему крайне сырой с отвратительным качеством прорисовки местности на дальних расстояниях, в последний патч добавились еще и проблемы с освещением..
P.P.S. Также опытным путем замечено, что при прочих равных при очередном запуске игры общий уровень FPS может принципиально различаться (аж на 15-20 кадров!!).. Так что, перезапустив игру, можно получить на том же месте 45 кадров, вместо скажем 25)) Уж чего, а такую ересь вижу впервые! Интересно, что от других графических настроек, за исключением прожорливого сглаживания, у меня не меняется вообще ничего (разница 2-5 FPS)! В общем занятный такой "некстгенчег" получился))
Assassin's Creed Unity, работающий на NVIDIA RTX 3090 с эффектами трассировки лучей, показывает потрясающую детализацию
MunchkiN 616 Учи русский язык, школьник. Аж глаза режет.
Надо попробовать, авось до ровных 30 поднимется
прям щас это сделаю. вообще так и не понял,что это за стретч такой))
30 фпс играбельно только на геймпаде с архимедленными поворотами. А на клавомыши - это только нервы выжигать. Было бы из-за чего. Те, кто купили игру и получили меньше 60 фпс - мазохисты ещё те.
Господи, что вы задницы-то надрываете? Если игра вышла сырой, то тут никакие настройки не помогут. Лучший способ избавится от лагов - ждать патчей и не долбать себе мозг.
FIL. Просто FIL Средний ФПС этим, к сожалению, не лечится(( Надо дроуколлы патчить. Может помочь только от гадских рывков изображения, на которые даже графические настройки не влияют..
LightHOwUSE Так всем людЯм поиграть хочется)) А этот "некстген" на i7 3930k(6 ядер) + gtx780 c 70 FPS умудряется "вымораживать" аж до 20!!))
весь прикол в том, что пропадает сглаживанье, как и в любой другой игре в окне. с самого выхода эту фичу пропалил
Sanya_id Сглаживание сохраняется согласно выставленным настройкам (я ставлю TXAA, например)! Для окна в меню "Оконный режим" есть параметр "В окне"! А мы ставим "Растянуть"!
LightHOwUSE [[[Чебураtor]]] Девочки не ссорьтесь)) Все вышеперечисленное - весьма неплохие игры! Я просто хотел помочь тем, кто очень хочет поиграть и кому-то, надеюсь, поможет) У меня эти фризы тоже заметны, даже при средних 60 FPS, возникает желание кинуть мышью в монитор, я уж молчу о том что приложение неадекватно работает в SLI.. А разрабов уже Фондовый рынок наказал, а потом догонит и еще накажет)) Это ш капитализм, бейба))
Спасибо, очень пригодился ваш код. Отличный урок.
То что нужно, спасибо большое!
Хороший урок, хорошо обьясняешь, подробно с нбансами, что и зачем. Молодец.
Массив ФпсКолорс не отобразился в инспекторе. Почему такое может быть? Сериализовал и делал публичным, и его и структуру, не помогает. не понимаю, почему так?
Вопрос касательно lowest и highest.
Чем хуже если они буду иметь значение первого элемента массива?
Вопрос сугубо для своего собственного развития.
Вместо:
int lowest = int.MaxValue;
int highest = 0;
Будет:
int lowest = _frameRange[0];
int highest = _frameRange[0];
а есть смысл делать проверку массива на null каждый кадр, вызвав просто метод initialize в awake
Очень интересно.. но нихуя не понятно)
Хороший ролик. А можно больше видео с паттернами
Мне было интересно посмотреть что ж ты вставил в 20-ти минутное видео, про компонент который обычно пишут в несколько строчек кода.)) Тем не менее урок зачетный. Я даже решил посмотреть как в моей конторе, где работает полно идиотов, написали этот компонент, так там впихнули toString() в Update. Открою завтра баг чтобы исправили))
Кстати еще можно сделать так:
_stringBuilder.Length = 0;
_stringBuilder.Append((int) fps);
var text = _stringBuilder.ToString();
Сделай крупнее шрифт или увеличь масштаб при записи, так как код плохо видно.
Читайте также: