Unity 6.3
0 онлайн 106 гостей 3 в системе
Вход
Ассеты и медиа Шаг 84 из 148

Загрузка и разгрузка ассетов с помощью системы ресурсов

Чтобы загрузить ресурсы с помощью системы Ресурсов:

  1. Создайте в проекте новую папку под названием Resources и добавьте в неё ресурсы. Unity затем сделает эти ресурсы доступными, даже если на них не делается прямых ссылок в сцене. Примечание: Вы можете иметь несколько папок Resources, расположенных в разных подпапках в папке Assets, а пакеты могут также содержать папки Resources.
  2. Всякий раз, когда вы хотите загрузить ресурс из одной из этих папок, вызовите 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.

Дополнительные ресурсы