ResourceLoader
Успадковує: Object
Однотон для завантаження ресурсних файлів.
Опис
Синглтон, який використовується для завантаження файлів ресурсів із файлової системи.
Він використовує багато класів ResourceFormatLoader, зареєстрованих у механізмі (вбудованих або з плагіна), щоб завантажувати файли в пам’ять і перетворювати їх у формат, який може використовувати механізм.
Примітка: Ви повинні спочатку імпортувати файли в механізм, щоб завантажити їх за допомогою load(). Якщо ви хочете завантажити Image під час виконання, ви можете використовувати Image.load(). Якщо ви хочете імпортувати аудіофайли, ви можете використати фрагмент, описаний у AudioStreamMP3.data.
Примітка: ** Нересурсні файли, наприклад файли звичайного тексту, не можна читати за допомогою **ResourceLoader. Замість цього використовуйте FileAccess для цих файлів і майте на увазі, що нересурсні файли не експортуються за замовчуванням (див. примітки в описі класу FileAccess, щоб отримати інструкції щодо їх експорту).
Посібники
Методи
void |
add_resource_format_loader(format_loader: ResourceFormatLoader, at_front: bool = false) |
get_cached_ref(path: String) |
|
get_dependencies(path: String) |
|
get_resource_uid(path: String) |
|
has_cached(path: String) |
|
list_directory(directory_path: String) |
|
load(path: String, type_hint: String = "", cache_mode: CacheMode = 1) |
|
load_threaded_get(path: String) |
|
load_threaded_get_status(path: String, progress: Array = []) |
|
load_threaded_request(path: String, type_hint: String = "", use_sub_threads: bool = false, cache_mode: CacheMode = 1) |
|
void |
remove_resource_format_loader(format_loader: ResourceFormatLoader) |
void |
set_abort_on_missing_resources(abort: bool) |
Переліки
enum ThreadLoadStatus: 🔗
ThreadLoadStatus THREAD_LOAD_INVALID_RESOURCE = 0
Ресурс недійсний або не був завантажений load_threaded_request().
ThreadLoadStatus THREAD_LOAD_IN_PROGRESS = 1
Ресурс все ще завантажується.
ThreadLoadStatus THREAD_LOAD_FAILED = 2
При навантаженні і її не вдалося.
ThreadLoadStatus THREAD_LOAD_LOADED = 3
Ресурс успішно завантажено, і до нього можна отримати доступ через load_threaded_get().
enum CacheMode: 🔗
CacheMode CACHE_MODE_IGNORE = 0
Не виходячи з основного ресурсу (за запитом, який буде завантажений) або будь-який його субресурси отримують з кешу, а не зберігаються в ньому. Залежності (зовнішні ресурси) навантажуються CACHE_MODE_REUSE.
CacheMode CACHE_MODE_REUSE = 1
Основним ресурсом (за запитом, який буде завантажений), його субресурси та його залежності (зовнішні ресурси) отримуються з кешу, якщо присутні, замість завантажених. Ті, які не завантажуються, а потім зберігаються в кеші. Ці ж правила пропагуються прямо на дерево залежностей (зовнішні ресурси).
CacheMode CACHE_MODE_REPLACE = 2
Як CACHE_MODE_REUSE, але кеш перевіряється на основний ресурс (за запитом, який буде завантажений) і для кожного його субресурсів. Тим не менш, у кеш-пам'яті з’являються дані, які оцінюються від зберігання в вже існуючі екземпляри. В іншому випадку вони відтворюються як абсолютно нові об'єкти.
CacheMode CACHE_MODE_IGNORE_DEEP = 3
Як CACHE_MODE_IGNORE, але пропагований рекурсивно вниз дерево залежностей (зовнішні ресурси).
CacheMode CACHE_MODE_REPLACE_DEEP = 4
Як CACHE_MODE_REPLACE, але пропагований рекурсивно вниз дерево залежностей (зовнішні ресурси).
Описи методів
void add_resource_format_loader(format_loader: ResourceFormatLoader, at_front: bool = false) 🔗
Статус на сервери ResourceLoader буде використовувати ResourceFormatLoader як описано в методичне навантаження.
Цей метод виконується непомітно для ResourceFormatLoaders, написаних в GDScript (див. ResourceFormatLoader для отримання додаткової інформації).
bool exists(path: String, type_hint: String = "") 🔗
Повертає, чи існує визнаний ресурс для вказаного пам'ятний шлях.
Додатковий type_hint може бути використаний для подальшого уточнення типу Resource, який слід обробляти ResourceFormatLoader. Будь-який, що спадок від Resource може бути використаний як підказка типу, наприклад Image.
Примітка: Якщо ви використовуєте Resource.take_over_path(), цей метод повернеться true, якщо ресурс не збережений (тобто існує тільки в ресурсному кеші).
Resource get_cached_ref(path: String) 🔗
Повертає кешоване посилання на ресурс для заданого path.
Примітка: Якщо ресурс не кешується, повернутий Resource буде недійсним.
PackedStringArray get_dependencies(path: String) 🔗
Повертає залежності для ресурсу за заданим path.
Кожна залежність – це рядок, який можна розділити на секції за допомогою ::. Може бути як одна секція, так і три секції, причому друга секція завжди порожня. Якщо є одна секція, вона містить шлях до файлу. Якщо є три секції, перша секція містить UID, а третя – резервний шлях.
for dependency in ResourceLoader.get_dependencies(path):
if dependency.contains("::"):
print(dependency.get_slice("::", 0)) # Виводить UID.
print(dependency.get_slice("::", 2)) # Виводить резервний шлях.
else:
print(dependency) # Виводить шлях.
PackedStringArray get_recognized_extensions_for_type(type: String) 🔗
Повертає перелік визнаних розширень для ресурсного типу.
int get_resource_uid(path: String) 🔗
Повертає ідентифікатор, пов'язаний з даним ресурсом, або -1, коли не існує такого ID.
bool has_cached(path: String) 🔗
Повертає, чи доступний кешований ресурс для заданого path.
Після завантаження ресурсу рушієм, він кешується в пам'яті для швидшого доступу, і майбутні виклики методу load() використовуватимуть кешовану версію. Кешований ресурс можна перезаписати, використовуючи Resource.take_over_path() для нового ресурсу для того самого шляху.
PackedStringArray list_directory(directory_path: String) 🔗
Виводить список каталогів, повертаючи всі ресурси та підкаталоги, що містяться в ньому. Файли ресурсів мають оригінальні імена файлів, як видно в редакторі перед експортом. До каталогів додано "/".
# Виводить ["extra_data/", "model.gltf", "model.tscn", "model_slime.png"]
print(ResourceLoader.list_directory("res://assets/enemies/slime"))
Примітка: Порядок файлів та каталогів, що повертаються цим методом, не є детермінованим і може відрізнятися залежно від операційної системи.
Примітка: Щоб нормально переміщатися по файловій системі, див. DirAccess.
Resource load(path: String, type_hint: String = "", cache_mode: CacheMode = 1) 🔗
Завантажує ресурс за вказаним path, кешуючи результат для подальшого доступу.
Зареєстровані ResourceFormatLoader послідовно запитуються, щоб знайти перший, який може обробити розширення файлу, а потім намагаються завантажити. Якщо завантаження не вдається, також намагаються завантажити решту ResourceFormatLoader.
Додатковий type_hint може бути використаний для подальшого визначення типу Resource, який має оброблятися ResourceFormatLoader. Будь-що, що успадковується від Resource, може бути використано як підказка типу, наприклад, Image.
Властивість cache_mode визначає, чи і як кеш повинен використовуватися або оновлюватися під час завантаження ресурсу.
Повертає порожній ресурс, якщо жоден ResourceFormatLoader не може обробити файл, і друкує помилку, якщо файл не знайдено за вказаним шляхом.
GDScript має спрощений вбудований метод @GDScript.load(), який можна використовувати в більшості ситуацій, залишаючи використання ResourceLoader для більш складних сценаріїв.
Примітка: Якщо ProjectSettings.editor/export/convert_text_resources_to_binary має значення true, @GDScript.load() не зможе прочитати конвертовані файли в експортованому проекті. Якщо ви покладаєтеся на завантаження файлів, що знаходяться в PCK, під час виконання, встановіть для ProjectSettings.editor/export/convert_text_resources_to_binary значення false.
Примітка: Відносні шляхи будуть мати префікс "res://" перед завантаженням. Щоб уникнути неочікуваних результатів, переконайтеся, що ваші шляхи абсолютні.
Resource load_threaded_get(path: String) 🔗
Повертає ресурс, завантажений load_threaded_request().
Якщо це викликається до завершення потоку завантаження (тобто load_threaded_get_status() не є THREAD_LOAD_LOADED), потік, що викликає, буде заблоковано, доки ресурс не завершить завантаження. Однак рекомендується використовувати load_threaded_get_status(), щоб дізнатися, коли завантаження фактично завершилося.
ThreadLoadStatus load_threaded_get_status(path: String, progress: Array = []) 🔗
Повертає статус потокової операції завантаження, розпочатої за допомогою методу load_threaded_request() для ресурсу за адресою path.
Змінну масиву можна додатково передати через progress, і вона поверне одноелементний масив, що містить коефіцієнт завершення потокового завантаження (між 0.0 та 1.0).
Примітка: Рекомендований спосіб використання цього методу – викликати його під час різних кадрів (наприклад, у методі node._process(), замість циклу).
Error load_threaded_request(path: String, type_hint: String = "", use_sub_threads: bool = false, cache_mode: CacheMode = 1) 🔗
Завантажує ресурс за допомогою потоків. Якщо use_sub_threads має значення true, для завантаження ресурсу буде використано кілька потоків, що пришвидшує завантаження, але може вплинути на основний потік (і таким чином спричинити уповільнення гри).
Параметр cache_mode визначає, чи і як кеш має використовуватися або оновлюватися під час завантаження ресурсу.
void remove_resource_format_loader(format_loader: ResourceFormatLoader) 🔗
Незареєстровані дані ResourceFormatLoader.
void set_abort_on_missing_resources(abort: bool) 🔗
Зміни поведінки на відсутніх субресурсах. Поведінка за замовчуванням полягає в скороченні навантаження.