Важно: Cache Server поддерживает только конвейер импорта активов версии 1. Если вы используете конвейер импорта активов версии 2, используйте Unity Accelerator вместо этого.
В Unity есть полностью автоматический конвейер ассетов. Всякий раз, когда изменяется исходный ресурс, такой как файл .psd или .fbx, Unity обнаруживает изменение и автоматически повторно импортирует его. Импортированные данные из файла впоследствии сохраняются Unity во внутреннем формате.
Такое расположение разработано, чтобы сделать рабочий процесс максимально эффективным и гибким для отдельного пользователя. Однако при работе в команде вы можете обнаружить, что другие пользователи могут продолжать вносить изменения в активы, и все они должны быть импортированы. Кроме того, активы необходимо повторно импортировать при переключении между настольными и мобильными целевыми платформами сборки. Поэтому для крупных проектов переход может занять много времени.
Кэширование данных импортированных ресурсов на Cache Server значительно сокращает время, необходимое для импорта ресурсов.
Unity кэширует каждый импортированный объект на основе:
- The Asset file itself
- The Import settings
- The Asset importer version
- The current platform
Если какое-либо из перечисленных выше изменений изменится, Unity повторно импортирует объект. В противном случае Unity загружает его с кэш-сервера.
При использовании Cache Server вы даже можете совместно использовать импорт объектов в нескольких проектах (то есть работа по импорту выполняется на одном компьютере, а результаты передаются другим).
Примечание. Как только сервер кэширования настроен и включен, этот процесс полностью автоматизирован, поэтому нет никаких дополнительных требований к рабочему процессу. Это сокращает время, необходимое для импорта проектов без дальнейшего вмешательства пользователя.
Включение сервера кэширования
Чтобы включить сервер кэширования:
- Откройте окно Настройки Unity (в главном меню: Unity > Настройки в MacOS или Редактировать > Настройки в Windows и Linux).
- Выберите Конвейер ресурсов в списке категорий слева. Настройки Unity Accelerator (Cache Server) отображаются на панели сведений справа.
- Выберите Удаленный или Локальный в раскрывающемся списке Режим кэш-сервера. Появятся свойства, уникальные для выбранного режима.
- Задайте настройки сервера кэширования для выбранного вами режима.
Совет. По возможности лучше разместить сервер кэширования на отдельном компьютере из-за ограничений по размеру жесткого диска.
Примечание. Если у вас есть локальный сервер кэширования с настраиваемым расположением, и это расположение становится недоступным, Unity отображает следующее предупреждение:
Каталог локального кеша не существует. Убедитесь, что у вас есть доступ к папке кеша и возможность записи в нее
Настройка сервера кэширования от имени администратора
Администраторам необходимо настроить компьютер Cache Server, на котором размещены кэшированные активы.
Чтобы настроить сервер кэширования на удаленном сервере:
- Загрузите сервер кэширования:
- Откройте страницу Unity Загрузить архив.
- Найдите используемую версию Unity и нажмите кнопку Загрузки для операционной системы целевого сервера.
- Нажмите ссылку Cache Server, чтобы начать загрузку.
- Разархивируйте файл, который выглядит следующим образом:
- Запустите командный сценарий, соответствующий вашей операционной системе.
Появится окно терминала, указывающее, что Cache Server работает в фоновом режиме:
Важно: Сервер кэширования должен находиться на надежном компьютере с очень большим хранилищем (намного больше, чем размер самого проекта, так как будет храниться несколько версий импортированных ресурсов). Если жесткий диск переполняется, сервер кэша может работать медленно.
Установка кэш-сервера как службы
Предоставленные .sh
и .cmd
скрипты Кусок кода, позволяющий создавать собственные Компоненты, запускать игровые события, изменять свойства Компонентов с течением времени и реагировать на действия пользователя любым удобным для вас способом. Подробнее
См. в Словарь должен быть настроен как служба на сервере.
Cache Server можно безопасно отключить и перезапустить в любое время, поскольку он использует атомарные операции с файлами.
Новые и старые кэш-серверы
По умолчанию запускаются два процесса Cache Server. Устаревший Cache Server работает с версиями Unity до версии 5.0. Новый Cache Server работает с версиями Unity от 5.0 и выше. Подробную информацию о настройке, включении и отключении двух разных серверов кэширования см. в разделе Конфигурация сервера кэша ниже.
Конфигурация сервера кэширования
Если вы просто начнете с выполнения сценария, он запустит устаревший сервер кэширования на порту 8125 и новый сервер кэширования на порту 8126. Он также создаст каталоги «cache» и «cache5.0» в том же каталоге, что и сценарий. , и хранить данные там. По умолчанию каталоги кэша могут увеличиваться до 50 ГБ. Вы можете настроить размер и расположение данных с помощью параметров командной строки, например:
./RunOSX.command --path ~/mycachePath --size 2000000000
или
./RunOSX.command --path ~/mycachePath --port 8199 --nolegacy
Вы можете настроить сервер кэширования, используя следующие параметры командной строки:
- Используйте
--port
, чтобы указать порт сервера. Это относится только к новому Cache Server. Значение по умолчанию:8126
. - Используйте
--path
, чтобы указать путь к расположению кеша. Это относится только к новому Cache Server. Значение по умолчанию:./cache5.0
. - Используйте
--legacypath
, чтобы указать путь к расположению кэша. Это относится только к устаревшему Cache Server. Значение по умолчанию:./cache
. - Используйте
--size
, чтобы указать максимальный размер кэша в байтах для обоих серверов кэша. Файлы, которые не использовались в последнее время, автоматически удаляются при превышении размера кэша. - Используйте
--nolegacy
, чтобы остановить запуск устаревшего сервера кэширования. В противном случае устаревший сервер кэширования запускается на порту8125
.
Требования к компьютеру, на котором размещен сервер кэширования
Для лучшей производительности должно быть достаточно оперативной памяти для хранения всей папки импортированного проекта. Кроме того, лучше всего иметь компьютер с быстрым жестким диском и быстрым Ethernet-соединением. На жестком диске также должно быть достаточно свободного места. С другой стороны, сервер кэширования использует очень мало ресурсов ЦП.
Одно из основных различий между Cache Server и системой управления версиямисистемой управления изменениями файлов. Вы можете использовать Unity в сочетании с наиболее распространенными инструментами контроля версий, включая Perforce, Git, Mercurial и PlasticSCM. Дополнительная информация
Увидите в Словарь, что его кэшированные данные всегда можно восстановить локально. Это просто инструмент для повышения производительности. По этой причине нет смысла использовать Cache Server через Интернет. Если у вас распределенная команда, вам следует разместить отдельный сервер кэширования в каждом месте.
Кэш-сервер оптимально работает на компьютере с ОС Linux или Mac OS X. Файловая система Windows не очень хорошо оптимизирована для хранения данных сервером кэша, и проблемы с блокировкой файлов в Windows могут вызвать проблемы, которые не возникают в Linux или Mac OS X.
Часто задаваемые вопросы о кэш-сервере
Будет ли размер моей базы данных Cache Server бесконечно расти по мере импорта и хранения все большего количества ресурсов?
Кэш-сервер автоматически удаляет активы, которые не использовались в течение определенного периода времени (конечно, если эти активы потребуются снова, они воссоздаются при следующем использовании).
Кэш-сервер работает только с сервером ресурсов?
Кэш-сервер спроектирован таким образом, чтобы быть прозрачным для систем контроля исходного кода/версий, поэтому вы не ограничены использованием Asset-сервера UnityНаследие — система управления активами и версиями с графическим пользовательским интерфейсом, интегрированная в Unity. Позволяет членам команды работать вместе над проектом на разных компьютерах. Подробнее
См. в Словарь.
Какие изменения вызывают повторное создание импортированного файла?
Когда Unity собирается импортировать объект, он создает хэш MD5 всех исходных данных.
Для текстуры это состоит из:
- Исходный ресурс: файл «myTexture.psd».
- Метафайл: «myTexture.psd.meta» (хранит все настройки импортера)
- Внутренний номер версии средства импорта текстур.
- Хэш номеров версий всех процессоров AssetPost
Если этот хэш отличается от того, что хранится на сервере кэширования, актив повторно импортируется. В противном случае загружается кешированная версия. Клиентский редактор Unity извлекает ресурсы с сервера только по мере необходимости. Активы не передаются в каждый проект по мере их изменения.
Как работать с зависимостями объектов?
Кэш-сервер не обрабатывает зависимостиВ контексте диспетчера пакетов зависимость – это конкретная версия пакета (выраженная в виде имя_пакета@версия_пакета
), которые требуются проекту или другому пакету для работы. Проекты и пакеты используют атрибут dependencies в своих манифестах для определения набора требуемых пакетов. Для проектов это считается прямой зависимостью; для пакетов это косвенные или транзитивные зависимости. Подробнее
См. в Словарь. Конвейер активов Unity не имеет отношения к концепции зависимостей. Он построен таким образом, чтобы избежать зависимостей между активами. Класс AssetPostprocessor — это распространенный метод, используемый для настройки средства импорта активов в соответствии с вашими потребностями. Например, вы можете добавить MeshColliders к некоторым GameObjectsфундаментальным объектам в сценах Unity, которые могут представлять персонажей, реквизит, декорации. , камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь в файле .fbx на основе их имени или тега.< /p>
Также легко использовать AssetPostprocessor
для введения зависимостей. Например, вы можете использовать данные из текстового файла рядом с активом, чтобы добавить дополнительные компоненты к импортированным игровым объектам. Это не поддерживается на сервере кэширования. Если вы хотите использовать Cache Server, вам необходимо удалить зависимость от других активов в папке проекта. Поскольку Cache Server ничего не знает о зависимости в вашем постпроцессоре, он не знает, что что-то изменилось, и поэтому использует старую кешированную версию Asset.
На практике существует множество способов постобработки активов, чтобы они хорошо работали с Cache Server. Вы можете использовать:
- Путь импортированного объекта
- Любые настройки импорта Объекта
- Сам исходный объект или любые данные, сгенерированные из него, передаются вам в постпроцессор объекта.
Есть ли проблемы при работе с материалами?
Изменение уже существующих материалов может вызвать проблемы. При использовании Cache Server Unity проверяет, сохраняются ли ссылки на Материалы, но, поскольку вызовы постобработки не вызываются, содержимое Материала не может быть изменено при импорте модели через Cache Server. Из-за этого вы можете получить разные результаты при импорте с Cache Server и без него.
Не изменяйте материалы, которые уже существуют на диске, из постпроцессора активов, потому что, если вы загружаете файл fbx через кеш-сервер, для него не выполняется процесс импорта. Поэтому, если вы полагаетесь на сброс сгенерированных материалов до некоторых сгенерированных значений по умолчанию каждый раз, когда запускается средство импорта модели, этот постпроцессор активов не будет запускаться при импорте кэшированного файла fbx.
Есть ли какие-либо типы активов, которые не кэшируются сервером?
Существует несколько видов данных объектов, которые сервер не кэширует. На самом деле кэширование файлов сценариев ничего не дает, поэтому сервер их игнорирует. Кроме того, собственные файлы, используемые программным обеспечением для 3D-моделирования (Autodesk® Maya®, Autodesk® 3ds Max® и т. д.), преобразуются в FBX с помощью самого приложения. Сервер активов не кэширует ни собственный файл, ни промежуточный файл FBX, созданный в процессе импорта. Однако можно воспользоваться преимуществами сервера, экспортировав файлы в формате FBX из программного обеспечения для моделирования, а затем добавив их в проект Unity.