В некоторых ситуациях полезно сделать ресурс доступным для проекта, не загружая его как часть сцены Сцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь. Например, может быть персонаж или другой объект, который может появиться в любой сцене игры, но который будет использоваться нечасто (например, это может быть «секретная» функция, сообщение об ошибке или оповещение о рекорде). Кроме того, вы можете даже захотеть загружать активы из отдельного файла или URL-адреса, чтобы сократить время первоначальной загрузки или разрешить взаимозаменяемый игровой контент.
Unity поддерживает папки ресурсов в проекте, что позволяет предоставлять контент в основном файле игры, но не загружать его до тех пор, пока он не будет запрошен. Вы также можете создавать наборы объектов. Это файлы, полностью отделенные от основного файла игры, которые содержат активы, к которым игра может получить доступ по запросу из файла или URL-адреса.
Наборы объектов
Набор ресурсов — это внешний набор ресурсов. У вас может быть много наборов активов и, следовательно, много разных внешних коллекций активов. Эти файлы существуют вне встроенного проигрывателя Unity, обычно они находятся на веб-сервере, чтобы конечные пользователи могли получать к ним динамический доступ.
Чтобы создать пакет активов, вы вызываете BuildPipeline.BuildAssetBundles() из сценария редактора. В аргументах вы указываете массив Objectsосновной объект в сценах Unity, который может представлять персонажей, реквизит, декорации, камеры , путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь для включения в созданный файл вместе с некоторыми другими параметрами. . Это создаст файл, который впоследствии можно динамически загрузить во время выполнения с помощью AssetBundle.LoadAsset().
Папки ресурсов
Папки ресурсов — это наборы ресурсов, которые включены во встроенный проигрыватель Unity, но не обязательно связаны с каким-либо игровым объектом в InspectorДополнительная информация
См. в Словарь.
Чтобы поместить что-либо в папку ресурсов, просто создайте новую папку в представлении проекта и назовите ее «Ресурсы». Вы можете иметь несколько папок ресурсов, организованных по-разному в вашем проекте. Всякий раз, когда вы хотите загрузить ресурс из одной из этих папок, вы вызываете Resources.Load().
Примечание:
Все ресурсы, найденные в папках ресурсов, и их зависимости
См. в Словарь хранятся в файле с именем resources.assets. Если ресурс уже используется другим уровнем, он сохраняется в файле .sharedAssets для этого уровня.
С помощью Resources.Load() можно получить доступ только к ресурсам, которые находятся в папке ресурсов. Однако в файле «resources.assets» может оказаться гораздо больше ресурсов, поскольку они являются зависимостями. (Например, Материал в папке «Ресурсы» может ссылаться на текстуру вне папки «Ресурсы»)
Выгрузка ресурсов
Вы можете выгрузить ресурсы AssetBundle, вызвав AssetBundle.Unload() или AssetBundle.UnloadAsync(bool). Если вы передадите true для параметра unloadAllLoadedObjects, как объекты, хранящиеся внутри AssetBundle, так и объекты, загруженные из AssetBundle с помощью AssetBundle.LoadAsset() будет уничтожен, а память, используемая пакетом, будет освобождена.
Иногда вы можете предпочесть загрузить AssetBundle, создать экземпляры нужных объектов и освободить память, используемую пакетом, сохраняя при этом объекты. Преимущество в том, что вы освобождаете память для других задач, например, для загрузки другого AssetBundle. В этом случае вы должны передать false в качестве параметра. После уничтожения бандла вы больше не сможете загружать из него объекты.
Если вы хотите уничтожить объекты сцены, загруженные с помощью Resources.Load(), перед загрузкой другого уровня, вызовите Object.Destroy() на них. Чтобы освободить активы, используйте Resources.UnloadUnusedAssets().