Skip to content

Latest commit

 

History

History
52 lines (34 loc) · 3.43 KB

File metadata and controls

52 lines (34 loc) · 3.43 KB

[LoadAllFromResources]

Что это: Атрибут [LoadAllFromResources] автоматизирует процесс загрузки всех ассетов указанного типа (префабов, ScriptableObject, материалов и т.д.) из папки Resources и назначает их в поле типа м...

Как использовать: см. разделы ниже.


Пространство имен: (global) Путь: Scripts/PropertyAttribute/InjectAttribute/LoadAllFromResourcesAttribute.cs

Описание

Атрибут [LoadAllFromResources] автоматизирует процесс загрузки всех ассетов указанного типа (префабов, ScriptableObject, материалов и т.д.) из папки Resources и назначает их в поле типа массив или List.

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

Как использовать

Поместите атрибут над полем, которое является массивом или списком (List<T>). Тип T должен быть типом ассета, который вы хотите загрузить (например, GameObject, Material, MyScriptableObject).

Пример:

using System.Collections.Generic;
using UnityEngine;

public class LevelDatabase : MonoBehaviour
{
    // Загрузит все ассеты типа LevelData из всех папок Resources
    [LoadAllFromResources]
    public List<LevelData> allLevels;

    // Загрузит все материалы из папки Resources/Skins/Swords
    [LoadAllFromResources("Skins/Swords")]
    public Material[] swordSkins;
}

Параметры конструктора

  • resourcePath (string): Необязательный параметр. Указывает путь к подпапке внутри любой папки Resources в проекте.
    • Если путь указан (например, "Skins/Swords"), поиск будет ограничен этой подпапкой.
    • Если путь не указан, поиск будет произведен по всем папкам Resources.

Важные замечания

  • Расположение ассетов: Для корректной работы атрибута все необходимые ассеты должны находиться внутри папки с названием Resources.
  • Тип поля: Атрибут работает только с полями, которые являются массивами (T[]) или списками (List<T>).
  • Перезапись: Загрузка и автозаполнение происходят только в том случае, если поле равно null или коллекция пуста (не содержит элементов). Это сделано для того, чтобы случайно не перезаписать ссылки, которые были назначены вручную.