ResourceFormatLoader
Наследует: RefCounted < Object
Загружает определенный тип ресурса из файла.
Описание
Godot загружает ресурсы в редакторе или в экспортированных играх с помощью ResourceFormatLoaders. Они запрашиваются автоматически через синглтон ResourceLoader или при загрузке ресурса с внутренними зависимостями. Каждый тип файла может загружаться как другой тип ресурса, поэтому в движке регистрируется несколько ResourceFormatLoaders.
Расширение этого класса позволяет вам определить свой собственный загрузчик. Обязательно соблюдайте задокументированные типы возвращаемых данных и значения. Вам следует дать ему глобальное имя класса с class_name, чтобы он был зарегистрирован. Как и встроенные ResourceFormatLoaders, он будет вызываться автоматически при загрузке ресурсов его обработанных типов. Вы также можете реализовать ResourceFormatSaver.
Примечание: Вы также можете расширить EditorImportPlugin, если нужный вам тип ресурса существует, но Godot не может загрузить его формат. Выбор одного из способов зависит от того, подходит ли формат для финальной экспортированной игры. Например, лучше сначала импортировать текстуры .png как .ctex (CompressedTexture2D), чтобы их можно было загрузить на видеокарту с большей эффективностью.
Методы
_get_classes_used(path: String) virtual const |
|
_get_dependencies(path: String, add_types: bool) virtual const |
|
_get_recognized_extensions() virtual const |
|
_get_resource_script_class(path: String) virtual const |
|
_get_resource_type(path: String) virtual const |
|
_get_resource_uid(path: String) virtual const |
|
_handles_type(type: StringName) virtual const |
|
_load(path: String, original_path: String, use_sub_threads: bool, cache_mode: int) virtual required const |
|
_recognize_path(path: String, type: StringName) virtual const |
|
_rename_dependencies(path: String, renames: Dictionary) virtual const |
Перечисления
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, но распространяется рекурсивно вниз по дереву зависимостей (внешние ресурсы).
Описания метода
bool _exists(path: String) virtual const 🔗
There is currently no description for this method. Please help us by contributing one!
PackedStringArray _get_classes_used(path: String) virtual const 🔗
There is currently no description for this method. Please help us by contributing one!
PackedStringArray _get_dependencies(path: String, add_types: bool) virtual const 🔗
Должен возвращать зависимости для ресурса по указанному пути path. Каждая зависимость представляет собой строку, состоящую из одной-трех секций, разделенных ::, при этом конечные пустые секции опускаются:
Первый раздел должен содержать UID, если он есть у ресурса. В противном случае он должен содержать путь к файлу.
Второй раздел должен содержать имя класса зависимости, если
add_typesравенtrue. В противном случае он должен быть пустым.Третий раздел должен содержать резервный путь, если у ресурса есть UID. В противном случае он должен быть пустым.
func _get_dependencies(path, add_types):
return [
"uid://fqgvuwrkuixh::Script::res://script.gd",
"uid://fqgvuwrkuixh::::res://script.gd",
"res://script.gd::Script",
"res://script.gd",
]
Примечание: Пользовательские типы ресурсов, определяемые скриптами, не известны ClassDB, поэтому для имени класса можно использовать "Resource".
PackedStringArray _get_recognized_extensions() virtual const 🔗
Получает список расширений файлов, которые может прочитать этот загрузчик.
String _get_resource_script_class(path: String) virtual const 🔗
Возвращает имя класса скрипта, связанного с Resource в заданном path. Если у ресурса нет скрипта или скрипт не является именованным классом, он должен вернуть "".
String _get_resource_type(path: String) virtual const 🔗
Получает имя класса ресурса, связанного с указанным путем. Если загрузчик не может его обработать, он должен вернуть "".
Примечание: Пользовательские типы ресурсов, определенные скриптами, не известны ClassDB, поэтому вы можете просто вернуть для них "Resource".
int _get_resource_uid(path: String) virtual const 🔗
Должен возвращать уникальный идентификатор ресурса, связанного с указанным путем. Если этот метод не переопределен, файл .uid генерируется вместе с файлом ресурса, содержащим уникальный идентификатор.
bool _handles_type(type: StringName) virtual const 🔗
Сообщает, какой класс ресурсов может загрузить этот загрузчик.
Примечание: Пользовательские типы ресурсов, определенные скриптами, не известны ClassDB, поэтому вы можете просто обработать "Resource" для них.
Variant _load(path: String, original_path: String, use_sub_threads: bool, cache_mode: int) virtual required const 🔗
Загружает ресурс, когда движок находит этот загрузчик совместимым. Если загруженный ресурс является результатом импорта, original_path будет нацелен на исходный файл. Возвращает объект Resource в случае успеха или константу Error в случае неудачи.
Свойство cache_mode определяет, следует ли и как использовать или обновлять кэш при загрузке ресурса. Подробности см. в CacheMode.
bool _recognize_path(path: String, type: StringName) virtual const 🔗
Сообщает, должен ли этот загрузчик загружать ресурс из своего пути к ресурсам для заданного типа.
Если он не реализован, поведение по умолчанию возвращает, находится ли расширение пути в пределах, предоставленных _get_recognized_extensions(), и находится ли тип в пределах, предоставленных _get_resource_type().
Error _rename_dependencies(path: String, renames: Dictionary) virtual const 🔗
Если реализовано, переименовывает зависимости в заданном ресурсе и сохраняет его. renames — это словарь { String => String }, сопоставляющий старые пути зависимостей с новыми путями.
Возвращает @GlobalScope.OK в случае успеха или константу Error в случае неудачи.