2015-03-02 3 views
8

Я работаю над оптимизацией своей игры для iOS, и я столкнулся с действительно странной проблемой с настройками качества в Unity3D, которые полностью застряли!Скрытая разница между настройками качества Unity 3D?

Я имею установку 4 настройки качества в игре с помощью:

Edit -> Project Settings -> Quality 

Четыре настройки: Простой, Хороший, красивый, Фантастический

Короткая версия является то, что независимо от опций, которые я установить внутри панель настроек качества, Simple всегда будет работать лучше, чем Good.

Например, если я установил Simple и Good, чтобы иметь одинаковые настройки для всех параметров рендеринга, установив все на минимальное (тени, антиалиасы, 1/8 текстуры и т. Д.) И протестируйте игру на iPad, начиная с различные варианты качества по умолчанию:

Simple - ~26FPS 
Good - ~6FPS 

Если я изменяю Простой в использовании 1/4 текстуры и оставить хорошее на 1/8 текстуры, он по-прежнему выполняет почти то же самое:

Simple - ~24FPS 
Good - ~6FPS 

я могу ясно видеть текстуры лучше/подробнее в Простом режиме на 1/4, но все же выполняется почти 20FPS быстрее, чем Хороший режим, который использует текстуры 1/8.

Я могу видеть, что при подключении профилировщика Unity iOS при работе в хорошем режиме ЦП страдает от постоянной нагрузки «Накладных расходов», которой нет в простом режиме (с идентичными настройками качества). Итак, что-то явно меняется, когда я перехожу от простого к хорошему, но, похоже, я ничего не могу изменить из меню настроек качества.

От чтения unity manual page У меня создалось впечатление, что различные настройки качества - это просто заполнители, поскольку вы можете добавлять/удалять параметры. Но из моих экспериментов кажется, что есть что-то еще, что меняется, когда я начинаю с опций Simple Vs Good (или других).

Я пробовал запустить игру в формате Simple/Good по умолчанию, а также вручную переключать код (используя C# через QualitySettings.SetQualityLevel), и я получаю такую ​​же производительность.

Я чувствую, что у меня что-то не хватает, но, похоже, я не могу понять это.

+1

Это большой вопрос! Однако вам может быть повезло с UnityAnswers. Этот сайт посвящен Unity, поэтому вы можете найти там более знающих людей. – SirBraneDamuj

+0

Спасибо за предложение - я действительно опубликовал это на Unity Answers, но не получил никаких ответов! Надеюсь, кто-то здесь, в StackOverflow, может помочь мне взломать его! – Jokode

ответ

2

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

  1. сделать текстуру atlasing уменьшить вызовов отрисовки
  2. Улучшите вычисления в функции обновления и кэш преобразований используется функция Update.
  3. Не выполнять поиск компонентов в каждом кадре, в некоторых случаях вы можете использовать одноплодный шаблон
  4. Не уничтожать объекты в каждом кадре. Сделайте объединение объектов.
  5. Улучшение выбросов частиц и сделать как меньше, так как вы можете
  6. Улучшения шейдеров. Если вы используете мобильные шейдеры мобильного использования. Для примера измените Diffuse shader на Mobile/Diffuse.

Вот некоторые полезные ссылки Object pooling video tutorial, Singleton pattern Unity3d c#

+0

Благодарим вас за ваши предложения. Я буду следить за всеми этими способами, пока я оптимизирую игру. Тем не менее, я боюсь, что это не отвечает моему первоначальному вопросу о том, существует ли какая-либо разница между качеством карандашей между настройками качества. В моем случае все настройки/функции идентичны для всех параметров качества - но все же, когда я переключаюсь с самого низкого (FASTEST) на любой другой уровень качества, я вижу значительное снижение производительности. Было бы разумно, если бы какие-либо другие функции включались по мере изменения уровня, но все настройки одинаковы! – Jokode

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