QualitySettings.vSyncCount
Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.
Submission failed
For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.
Your name Your email Suggestion * Submit suggestion
public static int vSyncCount ;
Description
The number of vertical syncs that should pass between each frame.
vSyncCount specifies the number of screen refreshes your game allows to pass between frames. In the Unity Editor, this corresponds to the VSync Count property under Project Settings > Quality > Other.
The default value of vSyncCount is 0. In the default case, Unity doesn’t wait for vertical sync.
Otherwise, the value of vSyncCount must be 1, 2, 3, or 4.
Depending on your target platform, use either vSyncCount or Application.targetFrameRate to set your application frame rate.
When you use vSyncCount , Unity calculates the target frame rate by dividing the platform’s default target frame rate by the value of vSyncCount . For example, if the platform’s default render rate is 60 fps and vSyncCount is 2, Unity tries to render the game at 30 frames per second.
Mobile platforms ignore vSyncCount . On mobile devices, when a frame is ready, it displays the next time the screen refreshes. You can use Application.targetFrameRate to control the frame rate on mobile platforms.
VR platforms ignore vSyncCount . Instead, the VR SDK controls the frame rate.
On all other platforms, Unity ignores the value of targetFrameRate if you set vSyncCount .
using UnityEngine;
public class Example : MonoBehaviour < void Start() < // Sync the frame rate to the screen's refresh rate QualitySettings.vSyncCount = 1; > >
Настройки Качества
Unity позволяет вам установить уровень качества графики, на котором будет производится попытка рендеринга. В общем случае, высокое качество снижает частоту кадров, таким образом, иногда лучше не устанавливать наивысший уровень качества на мобильных устройствах или старом оборудовании, так как это будет отрицательно влиять на игровой процесс. Инспектор Quality Settings (в меню: Edit->Project Settings->Quality ) используется для установки уровня качества для выбранных устройств в редакторе. Он разделен на две основные области: в верхней расположена следующая матрица:

Для быстрой ориентации в настройках качества, Unity позволяет вам назначать своим комбинациям настроек уникальные имена. Строки матрицы позволяют вам настроить какой уровень качества будет применён для той или иной платформы. Самая нижняя строчка матрицы не является уровнем качества как таковым, но она позволяет задать стандартный уровень качества для всех платформ (зелёный чекбокс в колонке отвечает за уровень выбранного качества для выбранной платформы). По-умолчанию вместе с Unity идёт 6 предустановленных наборов уровня качества, но вы также можете настраивать и сохранять свои наборы, используя кнопку, расположенную под матрицей. Чтобы удалить ненужный набор, можно воспользоваться значком корзины (расположенном в самой правой колонке).
Для редактирования уровня детализации, можете нажать на его названии под панелью настроек матрицы:

Параметры качества, которые вы можете установить для определенного уровня качества, следующие:
| Свойство: | Функция: |
|---|---|
| Имя | Имя, которое будет присвоено этому уровню качества. |
| Визуализация | |
| Pixel Light Count | Максимальное значение пиксельных источников света используемых при упреждающем рендеринге (Forward Rendering). |
| Texture Quality | Позволяет вам выбрать, отображать ли текстуры в высоком разрешении или в среднем (низкое разрешение требует незначительного количества ресурсов). Варианты настроек следующие Full Res, Half Res, Quarter Res и Eighth Res. |
| Анизотропные текстуры не используются. | This enables if and how anisotropic textures will be used. The options are Disabled, Per Texture and Forced On (ie, always enabled). |
| ###Сглаживание | Устанавливает уровень применяемого сглаживания. Варианты настроек следующие 2x, 4x and 8x мульти-сэмплинг. |
| ###Мягкие Частицы | Должно ли для частиц использоваться мягкое смешивание? |
| Realtime Reflection Probes | Should reflection probes be updated during gameplay? |
| Shadows | |
| Shadows | This determines which type of shadows should be used. The available options are Hard and Soft Shadows, Hard Shadows Only and Disable Shadows. |
| Shadow resolution | Тени могут быть отрендерены в нескольких разрешениях: Low, Medium, High и Very High. Чем выше разрешение, тем больше будет выполнено вычислений. |
| Shadow Projection | Существует два метода для проецирования теней из направленных источников света. Плотное прилегание (Close Fit) рендерит тени высокого разрешения, но время от времени при движении камеры они могут слегка колебаться. Стабильное прилегание (Stable Fit) рендерит тени низкого разрешения, но они не колеблются при движении камеры. |
| Shadow Cascades | Количество потоков теней может быть равно нулю, двум или четырём. Большее количество потоков означает и лучшее качество создаваемых теней, но также это и большее количество вычислений (для получения дальнейшей информации, просмотрите страницу Направленные тени (Directional Shadows)). |
| Shadow Distance | Максимальное расстояние от камеры на котором тени будут видны. Тени расположенные дальше рендериться не будут. |
| Shadow Near Plane Offset | Offset shadow near plane to account for large triangles being distorted by shadow pancaking. |
| Other | |
| Blend Weights | Количество костей, которые могут влиять на отдельно взятую вершину в процессе анимации. Доступными значениями являются: одна, две или четыре кости. |
| VSync Count | Рендеринг может быть синхронизирован с частотой обновлений устройства вывода (монитора) с целью избежания артефактов “разрывов” (смотрите ниже). Вы можете выбрать синхронизацию с каждой вертикальной пустотой (VBlank), с каждой второй вертикальной пустотой или же вовсе отключить синхронизацию. |
| LOD Bias | Уровень LOD выбирается исходя из размера объекта, занимаемого им на экране. Когда размер находится между двумя уровнями LOD, выбор может быть сделан как в сторону более детализированной, менее детализированной модели, так и в сторону более детализированной из двух имеющихся моделей. Значение может изменяться от 0 до 1 — чем ближе значение к 0, тем более вероятно что будет использоваться менее детализированная модель. |
| ##Максимальный уровень LOD | Наибольший LOD, который будет использоваться в игре. Для получения дополнительной информации ознакомьтесь с примечанием ниже. |
| Particle Raycast Budget | Максимальное количество излучаемых лучей, используемых для аппроксимации столкновений систем частиц (те с качеством Medium или Low ). Просмотрите модуль столкновений системы частиц. |
| Async Upload Time Slice | The amount of CPU time in milliseconds per frame to spend uploading buffered textures to the GPU. See Async Texture Upload. |
| Async Upload Buffer Size | The size in MB for the Async Upload buffer. See Async Texture Upload. |
Максимальный уровень LOD
Модели, которые будут иметь уровень детализации ниже максимального уровня (MaximumLOD) не будут использоваться, а также будут опущены при сборке (что позволит сохранить место в памяти). Unity будет использовать для настроек целевой платформы усреднённое значение LOD объектов, взятое из всех максимальных LOD, которые присутствуют в сцене. Если LOD был включён в группу, тогда независимо от используемой настройки качества, модели из этой группы будут включены в сборку и будут всегда загружаться при исполнении для этой LOD группы. В качестве примера, если в любой настройке будет использоваться уровень LOD 0, тогда в сборку будут включены все уровни LOD и использующие их объекты.
Разрыв кадра
Изображение на дисплее устройства обновляется не постоянно, а через некоторый постоянный интервал времени, подобно тому как происходит обновление кадра в Unity. Тем не менее, обновления Unity не обязательно синхронизированы с таковыми дисплея, таким образом, может возникнуть ситуация, когда Unity отправил на дисплей новый кадр, пока предыдущий все еще рендерится. Это приводит к визуальному артефакту, называемому “разрывом кадра” в том месте экрана, где произошла смена кадра.

Unity можно настроить на переключение кадров лишь в том промежутке времени, когда устройство вывода изображения (монитор) не обновляется, в момент так называемой “вертикальной пустоты” (“vertical blank”). Опция VSync настроек качества (Quality Settings) синхронизирует переключение кадров с вертикальной пустотой устройства или опционально с любой другой вертикальной пустотой. Последнее будет полезно, если игре для рендеринга одного кадра может потребоваться более одного устройства.
Сглаживание
Сглаживание (анти алиасинг) улучшает отображение граней полигонов, путём сглаживания их “зазубренности”. Однако это выливается в нагрузке на видеокарту и использование большего количества её памяти (нагрузка на центральный процессор отсутствует). Уровень сглаживания подразумевает то, насколько сглажены грани полигонов (и сколько это требует памяти).

However, built-in hardware anti-aliasing does not work with Deferred Shading or HDR rendering; for these cases you’ll need to use Antialiasing Image Effect.
Мягкие Частицы
Мягкие частицы исчезают в местах пересечения с геометрией сцены. Выглядит это конечно весьма привлекательно, однако требует для себя больше вычислительных ресурсов (более комплексные пиксельные шейдеры), и работает только на платформах, поддерживающих (текстуры глубины (depth textures))(SL-DepthTextures). Более того, вам нужно использовать проход рендеринга под названиемотложенное освещение, или произвести из скрипта камерный рендеринг текстур глубины.
Окно Profiler
Профайлер может быть подключен к вашему приложению, выполняющемся прямо на устройстве, либо к проигрывателю, запущенному на другом компьютере. В выпадающем меню Active Profiler отобразятся все проигрыватели, запущенные на устройствах и компьютерах в текущей локальной сети. Имена этих проигрывателей формируются из их типа и имён хостов, на которых они запущены, например “iPhonePlayer (iPhone Тома)”. Чтобы профайлер мог подключиться к проигрывателю, проигрыватель должен быть создан с включённым флажком Development Build в диалоговом окне Build Settings. В том же диалоге можно найти флажок, который позволит автоматически подключать профайлер к проигрывателю при запуске приложения: Autoconnect Profiler.
Элементы управления профайлера

Элементы управления профайлера размещены на панели инструментов в верхней части окна. Используйте их для включения и отключения профайлинга, перемещения между записанными профайлером кадрами и так далее. Элементы управления для перемещения по временной шкале находятся в правой части панели инструментов. Заметьте, что при использовании любого из элементов управления для перемещения по шкале, игровой процесс будет автоматически поставлен на паузу. Эти элементы позволяют перейти на первый, предыдущий, следующий или текущий кадр. Профайлер не хранит в памяти все записанные кадры, поэтому упомянутый переход на первый кадр на самом деле подразумевает самый старый, имеющийся в памяти. Кнопка перехода “Current” приводит не только к переходу на текущий кадр, но и к отображению данных в реальном времени в нижней панели. Выпадающее меню Active Profiler позволяет выбрать цель для профайлинга — это может быть редактор или отдельный проигрыватель (например игра, запущенная на подключенном iOS устройстве).
Глубокий профайлинг
При включенной кнопке Deep Profile , все ваши скрипты профилируются, то есть записываются вызовы всех функций. Это полезно, когда вы хотите выяснить куда именно тратится время в коде вашей игры.
Учтите, что глубокий профайлинг привносит очень большие избыточные нагрузки и требует много памяти, в результате чего ваша игра будет работать значительно медленнее при профилировании. Если вы используете очень сложный код, глубокий профайлинг может быть вообще невозможен. Глубокий профайлинг должен довольно быстро работать на небольших играх с простым кодом. Если вы заметили, что включение глубокого профайлинга приводит к такому падению частоты кадров, что игра едва работает, то следует отказаться от использования глубокого профайлинга и использовать способ, описанный ниже. Глубокий профайлинг будет полезен на этапе разработки дизайна игры, чтобы определить как лучше реализовать те или иные ключевые возможности. Учтите, что при использовании глубоко профайлинга на больших проектах может привести к переполнению памяти Unity, делая глубокий профайлинг невозможным.
Ручной профайлинг участков вашего кода будет иметь значительно меньшую излишнюю нагрузку, нежели при использовании глубокого профайлинга. Используйте функции кода Profiler.BeginSample и Profiler.EndSample для включения и отключения профайлинга для нужных вам секций кода.
View SyncTime (Отображение времени синхронизации)
При проигрывании с фиксированной частотой кадров или при включенной вертикальной синхронизации, Unity записывает время ожидания как “Wait For Target FPS”. По умолчанию, это время не отображается в профайлере. Чтобы посмотреть, сколько времени тратится на ожидание, вы можете включить “View SyncTime”. Также это помогает измерить как много времени у вас есть в запасе до снижения частоты кадров.
Временная шкала профайлера

В верхней части окна профайлера отображаются данные о производительности с течением времени. Когда вы запускаете игру, данные записываются каждый кадр и в профайлере выводится история последних нескольких сотен кадров. Клик на определенном кадре выделит его и в нижней части окна отобразит дополнительные данные, записанные в этом кадре. Дополнительные данные будут представлены в виде, соответствующем выделенной области.
Вертикальный масштаб временной шкалы устанавливается автоматически так, чтобы заполнялось вертикальное пространство окна. Заметьте, что вы можете удалить ненужные области для более детального просмотра нужной вам области, например можно удалить области Memory и Rendering, чтобы лучше рассмотреть область CPU. Также для увеличения площади под диаграмму временной шкалы, можно перетащить вниз горизонтальный разделитель между временной шкалой и панелью статистики.
Временная шкала состоит из нескольких областей: CPU Usage, Rendering и Memory. Эти области можно как удалить с помощью нажатия на кнопку закрытия на панели, так и добавить обратно с помощью выпадающего меню Add Area на панели инструментов профайлера.
Обратите внимание, что с помощью цветных меток вы можете контролировать связанные с ними части временной шкалы. Нажмите на метку для отключения отображения соответствующих данных. Метка затемнится и данные будут убраны из графика. Это может быть полезно при определении причин зашкаливающих скачков в графике CPU, например.
Как сделать вертикальную синхронизацию в юнити
Vertical synchronization (V Sync, Vertical Synchronization is a display setting, Limit the frame rate of the game To match the display of the display to prevent image tear.
Engineering settings
Unity’s VSYNC settings Project Settings -> Quality -> V Sync Count 。
V Sync Count
Choosing the rendering with vertical blank synchronization is not simultaneously. Unity can synchronize the rendering rate of the rendering with the display device to avoid tearing. Available options include Every V Blank 、 Every Second V Blank with Don’t Sync 。
Screen torn problem
The image on the display device will not continue to update, but periodically updated, largely, just like the frame updates in Unity. However, Unity’s update is not necessarily synchronized with the monitor’s update, so Unity may issue a new frame when the display is still rendering the previous frame. This can result in a visual flaw that is called «tear» at a position where frame changes occurred on the screen.

Transition failedre-uploadcancel
An example of analog tear. There is a clearly visible image offset in the zoomed part.
The Unity can only switch frames only in the time period (i.e., the so-called «vertical blank») of the display device. The V Sync Count option in the Quality settings will synchronize the frame switch with the vertical blank synchronization of the device, and can also select with each vertical blank. If the game needs multiple device updates to complete the rendering of the frame, the latter may be useful.
QualitySettings.vSyncCount
Vertical synchronization number.
Vertical synchronization should be passed between each frame. Use «don’t sync» (0), no vertical synchronization. The value must be 0, 1, 2, 3 or 4.
If this setting is set to Non-«Don’t Sync» (0) It will be ignored Application.targetFrameRate Value.
Note: This is not applicable on iOS, and Vsync settings are ignored on iOS. On ios, the device displays the frame on VBLANK. If VBLANK is missing due to the set Application.TargetFrameRate or performance, the frame is displayed on the next.
1 2 3 4 5 6 7 8 9 10
using UnityEngine; public class Example : MonoBehaviour < void Start() < // Sync framerate to monitors refresh rate QualitySettings.vSyncCount = 1; >>
Application.targetFrameRate
Indicates that the game is rendered with a specified frame rate.
The default targetFrameRate is a special value -1, indicating that the game should be rendered by the default frame rate of the platform. This default rate depends on the platform:
- On a stand-alone platform, the default frame rate is the maximum frame rate that can be implemented.
- On the mobile platform, the default frame rate is less than the maximum frame rate that can be implemented due to the need to save battery power. The default frame rate on the mobile platform is usually 30 frames per second.
- The maximum frame rate that all mobile platforms can have a fixed upper limit, which is equal to the refresh rate of the screen (60 Hz = 60 fps, 40 Hz = 40 fps, . ). Screen.currentResolution contains screen refresh rates.
- In addition, all mobile platforms can only display frames on VBLANK. Therefore, TargetFramerate should be set to -1, or equal to the value of the screen refresh rate, or the refresh rate is divided by an integer. Otherwise, the generated frame rate is always less than TargetFramerate. Note: If TargetFrameRate is set to refresh, the effective FPS obtained by the integer division is the same as the QualitySettings.vsyncCount set to the same integer value.
- iOS will ignore QualitySettings.vsynccount settings. Instead, the device will display the frame on the first possible VBLANK after the frame is ready, and the application implements the / targetframerate /.
- On WebGL, the default value allows the browser to select a frame rate to match its rendering cycle timing, which usually produces the most smooth effect. A non-default value is recommended only if you want to limit the CPU usage on WebGL.
- When using VR, Unity will use the SDK specified target frame rate and ignore the value specified by the game.
Setting TargetFramerate does not guarantee that the frame rate will be implemented. Since the platform specifications are different, the frame rate may videody, or the game may not reach the frame rate due to the speed of the equipment.
In addition, if the QualitySettings.vsyncCount property is set, the / targetframerate /, and the game will use the default rendering rate of VsyncCount and the platform to determine the target frame rate. For example, if the default rendering rate of the platform is 60 frames per second and Vsynccount is set to 2, the game will target 30 frames per second.
In the editor, TargetFrameRate only affects the Game view. Will not affect additional editor windows.
1 2 3 4 5 6 7 8 9 10
using UnityEngine; public class Example < void Start() < // Make the game run as fast as possible Application.targetFrameRate = 300; >>
Vertical synchronization impact on FPS
What is our usual operating system general screen refresh rate? It is generally generally around 60 Hz, then the graphics card will send a vertical synchronization signal, the signal and signal time interval is the time interval of the last two screen updates.
If we choose to wait for a vertical sync signal (that is, we usually say vertical synchronous open), then in the game, the strong graphics card will quickly draw the completed image, but there is no vertical synchronous signal arrival, the graphics card cannot draw the next The screen, only the signal arrived by the 60 Hz unit can be drawn. Such FPS naturally be restricted by the operating system refresh rate.
And if we choose not to wait a vertical sync signal (that is, we usually turn off vertical synchronization), then the game is finished in the screen, the graphics card and the display can start the next screen image, naturally Can fully exert the strength of the graphics card. But don’t forget, it is because of the existence of vertical synchronization, it can make the game process and display refresh rate synchronize, so that the picture is smoother and stable. The vertical synchronization signal is canceled, which can be exchanged faster, but the continuity of the image is bound to be discounted. This is what many friends complained that they were disconnected after the vertical discovery.
Knowledge supplement: refresh rate
Refresh rate refers to the number of times the electron beam on the screen is repeatedly scanned. The higher the refresh rate, the better the image displayed (picture). The high refresh rate will directly determine its price, but due to both the refresh rate and the resolution mutual restriction, only a display that reaches high refresh rates at high resolutions can be called performance excellent performance.
You can understand this, the refresh rate is the number of times the screen is refreshed every second. When we watch movies, it is actually a one-stop picture, just like a slide, why do we feel that the picture is moving, that is because The human eye has a visual stay effect. The impression of the previous picture remains in the brain has not disappeared, followed by a separate picture, and the difference between the two screens is very small, one action should use a lot of deputy pictures. To show, so that we feel that the picture is moving, this one-sized replacement screen is refreshed, suppose a move is completed by 20 pictures, we look a bit like cartoon, and this action increases to 30 If you look, you look natural, this is the refresh rate.
Knowledge supplement: Hz unit
Hertz is an international unit of the international unit system, which is measured by the periodic changes of periodic changes per second.
Hertz is referred to as Her. Vibration (or oscillating, fluctuating) once per second is 1 Hz, or can be written / second, week / second. Named by German scientist Herz.