Большое количество файлов 3D-моделей может заморозить редактор Unity и Jetbrains Rider.

Я хотел бы использовать много 3D-моделей более 4000. Размер папки может быть не менее 20ГБ. Когда я открыл эту папку в редакторе Unity, мой движок Unity и Jetbrains Rider заморозили, как вы думали. Однако эти модели не являются причиной для загрузки каждый раз, поскольку несколько загружаемых моделей определяются динамически во время выполнения.

Я думаю, что могу использовать функцию AssetBundle для динамической загрузки этой модели. Однако я думаю, что ограниченные ресурсы должны быть помещены в папку Assets для сборки в качестве актива. Это может заморозить моего редактора и Райдера. Но технически я думаю, что AssetBundle нужно встраивать отдельно.

Как я могу решить эту проблему?


person kyasbal    schedule 27.07.2018    source источник
comment
Возможно, вам стоит попробовать этот blog.umbra3d.com/blog / large-and-complex-3d-content-in-unity   -  person Ignacio Alorre    schedule 30.07.2018


Ответы (3)


Вы действительно можете использовать Assetbundles, чтобы решить эту проблему. Если у вас есть все ваши модели, встроенные в комплекты ресурсов, вы можете сохранить файл assetbundle и assetbundle.manifest на удаленном сервере или по FTP и просто загружать его во время выполнения, когда вам понадобится актив. таким образом модели никогда не будут в вашем проекте сборки и даже могут быть в отдельном едином проекте, что решит ваши проблемы, связанные со сбоями в вашем основном проекте.

В качестве ответа я предполагаю, что вы используете новый инструмент браузера Unity Assetbundle и версию Unity выше 5.6. Если у вас нет нового браузера Assetbundle, вот несколько быстрых шагов, чтобы получить его:

  • Загрузите инструмент браузера AssetBundle из GitHub в Unity.
  • Добавьте загруженные файлы в папку / Asset / вашего проекта Unity.
  • Перейдите в Window> assetbundle browser.
  • краткое руководство можно найти здесь

Создание пакетов

Преимущество использования наборов ресурсов для этого заключается в том, что, если версии Unity совпадают, они могут быть построены из отдельных проектов. Поэтому я бы рекомендовал создать новый пустой проект и протестировать, сколько моделей вы можете иметь в этом проекте, без сбоя Unity.

Как только вы найдете это ограничение, создайте префабы из моделей и добавьте их в инструмент браузера Assetbundle.

Задайте целевую платформу, для которой вы хотите создать наборы ресурсов, и степень сжатия, к которой вы хотите применить, в разделе «build» инструмента браузера assetbundle. после того, как вы сделали это, нажмите «построить», чтобы создать свои наборы активов.

После завершения этого процесса вы можете взять файл assetbundle и assetbundle.manifest и загрузить их на отдельный сервер или FTP, к которому клиент может подключиться во время выполнения, чтобы загрузить требуемый набор ресурсов, содержащий желаемую модель.

Поскольку новый инструмент браузера Assetbundle имеет открытый исходный код, вы также можете автоматизировать процесс загрузки наборов ресурсов сразу после их создания.

Еще одним преимуществом этого является то, что браузер assetbundle обнаружит любые общие ресурсы (например, шейдеры, скрипты) и предоставит вам возможность переместить их в общий набор ресурсов, который необходимо загрузить только один раз, и любой следующий набор ресурсов может вызвать. Таким образом, вам не придется постоянно загружать общие ресурсы.

Создание наборов ресурсов - довольно трудоемкая задача (также в зависимости от целевой платформы и настроек сжатия), поэтому, если у вас есть доступные ресурсы, вы можете сделать это на нескольких компьютерах одновременно.

person Remy    schedule 30.07.2018

Вы можете попробовать исключить папку из индексации. https://youtrack.jetbrains.com/issue/RIDER-8664#comment=27-2399808

person Ivan Shakhov    schedule 30.07.2018

Я думаю, что лучший способ исправить это - просто не использовать так много моделей.

Так просто.

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

Как в кино. Вам не нужно 2000 человек, чтобы собрать толпу. Вам просто нужно 20 разных людей и скопировать их туда в CGI.

person e_casper    schedule 27.07.2018
comment
К сожалению, это не подходит для моего случая. Я не говорю, что эти модели показываются одновременно. Конечно, я бы не стал показывать такое количество моделей за один раз. Если это так, естественно, я могу использовать AssetBundle для выгрузки неиспользуемых моделей. - person kyasbal; 28.07.2018