Загрузка и разгрузка ассетов с помощью системы ресурсов
Чтобы загрузить ресурсы с помощью системы Ресурсов:
- Создайте в проекте новую папку под названием
Resourcesи добавьте в неё ресурсы. Unity затем сделает эти ресурсы доступными, даже если на них не делается прямых ссылок в сцене. Примечание: Вы можете иметь несколько папокResources, расположенных в разных подпапках в папкеAssets, а пакеты могут также содержать папкиResources. - Всякий раз, когда вы хотите загрузить ресурс из одной из этих папок, вызовите
Resources.Loadв вашем коде. Таким образом можно получить доступ только к ресурсам в папкеResources.
Например, вы можете использовать следующий скрипт для загрузки и применения текстуры к нему:
using UnityEngine;
public class LoadTexture : MonoBehaviour
{
// Reference a material to apply the texture to
public Renderer targetRenderer;
void Start()
{
// Load a texture from the Textures folder inside the Resources folder
Texture2D loadedTexture = Resources.Load<Texture2D>("Textures/MyTexture");
if (loadedTexture != null)
{
// Apply the loaded texture to the material of the target renderer
targetRenderer.material.mainTexture = loadedTexture;
Debug.Log("Texture successfully loaded and applied.");
}
else
{
Debug.LogError("Failed to load texture from Resources.");
}
}
}
Unity хранит все ассеты в папках Resources и их зависимости в файле в выводе сборки под названием resources.assets. Если сцена в сборке ссылается на ассет, Unity вместо этого сериализирует этот ассет в файл sharedAssets*.assets.
Дополнительные ассеты могут оказаться в файле resources.assets, если они являются зависимостями. Например, материал в папке Resources может ссылаться на текстуру вне папки Resources. В этом случае текстура также включена в файл resources.assets, но не доступна для прямой загрузки.
Разгрузка ассетов
Если вы хотите уничтожить объекты, загруженные Resources.Load перед загрузкой другой сцены, вызовите Object.Destroy на них. Чтобы восстановить память, используемую объектами без ссылки, используйте Resources.UnloadUnusedAssets.