Поиск списка ресурсов, используемых в Scene Unity - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь уменьшить размер сборки. Я сжал несколько текстур, которые помогли мне немного уменьшить размер. Для дальнейшего сокращения я хочу проверить файлы, хранящиеся в папке Resources . Существует несколько папок Resources . Со временем мы использовали разные пустышки внутри папки «Ресурсы». Это мой план:

  1. Перечислите все ресурсы, основанные на сценах.

    Мне удалось получить список ресурсов с помощью Resources.LoadAll () функция.

    Я получил список Сцены .

    Я не знаю, как получить список ресурсов, используемых в определенной сцене.

  2. Я могу сделать сравнение с исходным набором ресурсов и получить список неиспользованных.

Есть идеи, как это сделать?

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Как сказал @Programmer, это невозможно. Все в вашей папке «Ресурсы» автоматически включается в вашу сборку, чтобы вы могли загрузить ресурс через Resources.load в вашем коде.

Я предлагаю не использовать папку «Ресурсы», если нет необходимости загружать этот ресурс через Resources.Load. Эта практика поможет уменьшить количество неиспользуемых ресурсов, включенных в вашу сборку. Вместо этого ссылайтесь на ресурсы друг друга с помощью Unity Inspector, устанавливайте ссылки на публичные переменные в сценариях и т. Д.

Вы можете выполнить рефакторинг, выяснив, какие ресурсы загружены кодом, выполнив поиск экземпляров Resources.Load. Все остальное можно переместить в папку, которая не называется «Ресурсы» (называйте ее как угодно, например, «Resources_Managed», чтобы ее не считали специальной папкой Unity ).


Примечание: Официальный учебник Unity по передовым методам для папки Resources говорит, что не следует использовать систему ресурсов:

Рекомендации для системы ресурсов

Не используйте это. [...]

Простота папки ресурсов делает ее отличной системой для быстрого прототип. Однако, когда проект переходит в полное производство, использование папки «Ресурсы» следует исключить.


Примечание. Он не дает прямого ответа на ваш вопрос, но этот платный плагин для хранилища активов Unity может быть вам полезен: Искатель использования активов [У меня нет связи с этим инструментом, хотя Я использую его для своих проектов.] . Он не может перечислить все ресурсы, используемые в конкретной сцене, но он может сказать вам, где на конкретный ресурс ссылаются в вашем проекте. (Конечно, он не может определить, загружен ли ресурс через Resources.Load). Исходный код также включен, поэтому должна быть возможность написать инструмент для выполнения того, что вы хотите (но это будет много работы).

0 голосов
/ 26 октября 2018

Я не знаю, как получить список ресурсов, используемых в конкретном Сцена.

Вы не можете сделать это, и, пожалуйста, не тратьте так много времени на это, потому что:

1 . Как только вы поместите файл ресурса в папку «Ресурсы», он будет включен в окончательную сборку.

2 . Вызов Resources.Load из сцены в определенном сценарии следует рассматривать как использование этих ресурсов в сцене, но поскольку это выполняется кодом, вы не можете его посчитать. Нет способа считать это использованным.

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


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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...