Version: 5.4
Список ID классов YAML
Изменение исходных ассетов из кода

Настройка Cache Server’а

В Unity есть полностью автоматизированный конвейер ассетов. Где бы исходный ассет (типа файлов .psd или .fbx) не был изменён, Unity определит изменение и автоматически переимпортирует его. Импортированные из файла данные далее хранятся Unity в своём собственном внутреннем формате.

Такая схема используется для создания наиболее эффективного и гибкого рабочего процесса для каждого пользователя. Однако когда вы работаете в команде, вы заметите, что другие пользователи могут совершать изменения в ассетах и для всех их этот ассет должен быть снова импортирован. Кроме того, ассеты должны быть переимпортированы, когда вы переключаетесь между настольной и мобильной целевыми платформами. Следовательно, переключение может занять длительное время на больших проектах.

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

Each asset import is cached based on

  • Самого файла ассета
  • Настроек импорта
  • Версии импортера ассетов
  • Текущей платформы

Если изменится что-либо из перечисленного выше, ассет будет переимпортирован, иначе он будет скачан с Cache Server’а.

Когда вы включаете cache server в настройках, вы даже можете сделать результаты импорта ассетов доступными на разных машинах (например, работу по импорту выполнить на одной машине, и поделиться результатами с остальными).

Учтите, что после настройки cache server этот процесс становится полностью автоматическим, то есть, рабочий процесс не требует дополнительных изменений. Это просто снизит время, требуемое для импортирования проекта без вмешательства в ваш рабочий процесс.

Как настроить Cache Server (пользователь)

Setting up the Cache Server couldn’t be easier. All you need to do is click Use Cache Server in the preferences and tell the local machine’s Unity Editor where the Cache Server is.

This can be found in Unity->Preferences on the Mac or Edit->Preferences on the PC.

If you are hosting the Cache Server on your local machine, specify localhost for the server address. However, due to hard drive size limitations, it is recommended you host the Cache Server on separate machine.

Как настроить Cache Server (пользователь)

Admins need to set up the Cache Server machine that will host the cached assets.

Вам следует:

  • Купить Cache Server (в качестве части Team License) в онлайн магазине.
  • Скачать Cache Server. Перейти на страницу Unity Team License и нажать на кнопку для скачивания (Download) Cache Server.
  • Разархивируйте файл и вы увидите что-то вроде этого:
  • В зависимости от вашей ОС, запустите соответствующий командный скрипт.
  • Вы увидите консольное окно, сообщающее о том, что Cache Server запущен и работает в фоновом режиме

Cache Server должен размещаться на надёжной машине с очень большим объёмом свободного дискового пространства (намного больше, чем размер самого проекта, т.к. там будет храниться несколько версий импортированных ресурсов). После заполнения диска, Cache Server может работать медленней.

Установка Cache Server в виде сервиса

The provided .sh and .cmd scripts should be set-up as a service on the server. The cache server can be safely killed and restarted at any time, since it uses atomic file operations.

Настройка Cache Server’а

Если вы просто запустите Cache Server двойным кликом по скрипту, он создаст папку “cache” рядом со скриптом, и будет хранить свои данные в этой папке. Максимально допустимый размер содержимого в этой папке cache - 50 ГБ. Вы можете настроить максимальный размер и расположение данных с помощью опций командной строки, например:

./RunOSX.command --path ~/mycachePath --size 2000000000

or

./RunOSX.command --path ~/mycachePath --port 8199 -nolegacy

You can configure the cache server by using the following command line options:

--port lets you specify the server port, it only applies to the new cache server, the default value is 8126.

--path lets you specify the path of the cache location, it only applies to the new cache server, the default value is ./cache5.0.

--legacypath lets you specify the path of the cache location, it only applies to the legacy cache server, the default value is ./cache.

--size lets you specify the maximum cache size in bytes for both cache servers. Files that have not been used recently will automatically be discarded when the cache size is exceeded.

--nolegacy if specify it will NOT start the legacy cache server, otherwise the legacy cache server is started on port 8125.

Требования к машине, на которой размещён Cache Server

Для наилучшей производительности, на машине должно быть достаточно RAM для хранения всей папки импортированного проекта. Кроме того, желательно иметь машину с быстрым жёстким диском и быстрым Ethernet соединением. Также на диске должно быть достаточное количество свободного места. С другой стороны, Cache Server потребляет очень мало CPU ресурсов.

Одно из основных отличий Cache Server от системы контроля версий это то, что закэшированные данные всегда могут быть локально пересобраны. Это просто инструмент для увеличения производительности. По-этому нет смысла использовать Cache Server по сети Internet. Если у вас распределённая команда, вам следует разместить отдельный cache server в каждой локации.

Cache Server должен работать на машине под управлением Linux или MacOS. Файловая система Windows не достаточно хорошо оптимизирована под используемый в Asset Cache Server’е способ хранения данных, и проблемы с блокировкой файлов на Windows могут вызывать проблемы, не возникающие на Linux или Mac OS.

Cache Server FAQ

Будет ли размер базы моего Cache Server бесконечно расти по мере импорта и хранения все большего числа ресурсов?

The Cache Server removes assets that have not been used for a period of time automatically (of course if those assets are needed again, they will be re-created during next usage).

Does the cache server work only with the asset server?

The cache server is designed to be transparent to source/version control systems and so you are not restricted to using Unity’s asset server.

What changes will cause the imported file to get regenerated?

When Unity is about to import an asset, it generates an MD5 hash of all source data.

For a texture this consists of:

  • The source asset: “myTexture.psd” file
  • The meta file: “myTexture.psd.meta” (Stores all importer settings)
  • The internal version number of the texture importer
  • A hash of version numbers of all AssetPostprocessors

If that hash is different from what is stored on the Cache Server, the asset will be reimported, otherwise the cached version will be downloaded. The client Unity editor will only pull assets from the server as they are needed - assets don’t get pushed to each project as they change.

Как мне быть с зависимостями ассета?

Cache Server не обрабатывает зависимости. Конвейер ассетов Unity не работает с понятием зависимостей. Он построен так, чтобы избегать зависимостей между ассетами. AssetPostprocessor’ы - основной способ настройки импортера ассетов “под себя”. Например, вы могли бы пожелать добавить MeshCollider’ы к некоторым GameObject’ам в файле fbx на основе их имени или тэга.

Кроме того, AssetPostprocessor’ы довольно просто использовать для введения зависимостей. Например, вы могли бы использовать данные из текстового файла рядом с ассетом для добавления дополнительных компонентов к импортированным игровым объектам. Это не поддерживается в Cache Server. Если вы желаете использовать Cache Server, вам придётся удалить зависимости на других ассетах в папке проекта. Так как Cache Server ничего не знает про зависимость в вашем пост-процессоре, он не будет знать о том, что что-то изменилось, таким образом, используя старую закэшированную версию ассета.

In practice there are plenty of ways you can do asset postprocessing to work well with the cache server. You can use:

  • The Path of the imported asset
  • Any import settings of the asset
  • The source asset itself or any data generated from it passed to you in the asset postprocessor.

Are there any issues when working with materials?

Modifying materials that already exist might cause trouble. When using the Cache Server, Unity validates that the references to materials are maintained. But since no postprocessing calls will be invoked, the contents of the material can not be changed when a model is imported through the Cache Server. Thus you might get different results when importing with or without Cache Server. It is best to never modify materials that already exist on disk.

Are there any asset types which will not be cached by the server?

Существует несколько видов данных ассета, которые не кэшируются сервером. Кеэширование скриптовых файлов ничего нам не даст, потому сервер будет их игнорировать. Кроме того, нативные файлы, используемые программным обеспечением для 3D моделирования (Maya, 3D Max и т.д.) конвертируются в FBX с помощью самого приложения. На сегодняшний день, ассет сервер не кэширует ни нативный файл, ни промежуточный FBX файл, генерируемый в процессе импорта. Однако можно получить выгоду от сервера, экспортируя файлы в FBX из ПО для моделирования и добавляя эти файлы в Unity проект.

Список ID классов YAML
Изменение исходных ассетов из кода