Unity 6.3
0 онлайн 96 гостей 3 в системе
Вход
Оптимизация Шаг 92 из 208

Пакетные меши во время выполнения

Дополнительные сведения о пакетной обработке см. в Введение в пакетные сетки.

Примечание: Unity расходует дополнительную память CPU на хранение объединённых мешей, даже если меши одинаковы. Например, пометка деревьев как статических в густом лесу может сильно сказаться на памяти. Если статическое пакетирование расходует слишком много памяти, комбинировать меши вручную вместо этого.

Пакетирование статических GameObject во время выполнения

Чтобы пакетировать статические GameObject во время выполнения — например, созданные процедурно, — выполните следующие шаги:

  1. Выберите каждую сетку, которую вы хотите объединить, затем в окне Inspector включите Read/Write enabled.

  2. Используйте StaticBatchingUtility API для объединения мешей. StaticBatchingUtility.Combine метод объединяет GameObject и подготавливает их к статическому пакетированию.

Примечание: Чтобы избежать сетки чтения/записи, использующей двойное количество памяти, теперь можно удалить одну копию сетки, вызвав Mesh.UploadMeshData API с markNoLongerReadable установленным на true.

Включать настройку статического пакетирования в ассете URP, ассете HDRP или Настройки Игрока.

Если сетка отбрасывается, потому что она находится вне поля зрения камеры, Unity может разделить батч на две батча, чтобы избежать разрыва в комбинированных вершинных буферах.

Во время выполнения можно изменять только положение, вращение и масштаб всей батча, а не отдельных мешей.

Пакетное перемещение GameObjects во время выполнения

Чтобы пакетно переместить GameObjects, включите динамический пакет.

Предупреждение: В большинстве случаев динамическое пакетирование больше не рекомендуется, так как накладные расходы CPU могут оказаться выше, чем накладные расходы на вызов отрисовки. Если вы используете URP или HDRP, применяйте вместо него Scriptable Render Pipeline (SRP) Batcher. Дополнительные сведения см. в Выбор метода оптимизации вызовов отрисовки.

Выполните следующие действия во Встроенном Render Pipeline:

  1. Перейдите в Изменить > Project Настройки > Игрок.
  2. В разделе Другие настройки включите Динамическое пакетирование.

Динамическое пакетирование преобразует всю геометрию в пространство мира. Чтобы отключить динамическое пакетирование в пользовательском шейдере и получить доступ к пространству объектов, включите Отключить пакетирование в окне Shader Import Settings шейдера.

Вы также можете отключить пакетирование, установив метку DisableBatching на True в блоке subshader шейдера. Например:

    SubShader {
        Tags { "DisableBatching" = "True" }
        ...
    }

Дополнительные ресурсы