Resource
Успадковує: RefCounted < Object
Успадковано від: Animation, AnimationLibrary, AnimationNode, AnimationNodeStateMachinePlayback, AnimationNodeStateMachineTransition, AudioBusLayout, AudioEffect, AudioStream, BitMap, BoneMap, ButtonGroup, CameraAttributes, ColorPalette, Compositor, CompositorEffect, CryptoKey, Curve, Curve2D, Curve3D, EditorNode3DGizmoPlugin, EditorSettings, Environment, FoldableGroup, Font, GDExtension, GLTFAccessor, GLTFAnimation, GLTFBufferView, GLTFCamera, GLTFDocument, GLTFDocumentExtension, GLTFLight, GLTFMesh, GLTFNode, GLTFPhysicsBody, GLTFPhysicsShape, GLTFSkeleton, GLTFSkin, GLTFSpecGloss, GLTFState, GLTFTexture, GLTFTextureSampler, Gradient, Image, ImporterMesh, InputEvent, JSON, LabelSettings, LightmapGIData, Material, Mesh, MeshLibrary, MissingResource, MultiMesh, NavigationMesh, NavigationMeshSourceGeometryData2D, NavigationMeshSourceGeometryData3D, NavigationPolygon, Noise, Occluder3D, OccluderPolygon2D, OggPacketSequence, OpenXRAction, OpenXRActionMap, OpenXRActionSet, OpenXRBindingModifier, OpenXRHapticBase, OpenXRInteractionProfile, OpenXRIPBinding, PackedDataContainer, PackedScene, PhysicsMaterial, PolygonPathFinder, RDShaderFile, RDShaderSPIRV, RichTextEffect, SceneReplicationConfig, Script, Shader, ShaderInclude, Shape2D, Shape3D, Shortcut, SkeletonModification2D, SkeletonModificationStack2D, SkeletonProfile, Skin, Sky, SpriteFrames, StyleBox, SyntaxHighlighter, Texture, Theme, TileMapPattern, TileSet, TileSetSource, Translation, VideoStream, VideoStreamPlayback, VisualShaderNode, VoxelGIData, World2D, World3D, X509Certificate
Базовий клас для серійних об'єктів.
Опис
Resource – це базовий клас для всіх типів ресурсів, специфічних для Godot, який служить переважно контейнерами даних. Оскільки вони успадковуються від RefCounted, ресурси підраховуються за посиланнями та звільняються, коли більше не використовуються. Їх також можна вкладати в інші ресурси та зберігати на диску. PackedScene, один з найпоширеніших Object у проекті Godot, також є ресурсом, унікально здатним зберігати та створювати екземпляри Node, які він містить, скільки завгодно разів.
У GDScript ресурси можуть завантажуватися з диска за їхнім resource_path за допомогою @GDScript.load() або @GDScript.preload().
Механізм зберігає глобальний кеш усіх завантажених ресурсів, на які посилаються шляхи (див. ResourceLoader.has_cached()). Ресурс буде кешований під час першого завантаження та видалений з кешу після звільнення всіх посилань. Коли ресурс кешується, наступні завантаження з використанням його шляху повертатимуть кешоване посилання.
Примітка: У C# ресурси не звільняються миттєво після того, як вони більше не використовуються. Натомість періодично запускатиметься збирання сміття, яке звільнятиме ресурси, що більше не використовуються. Це означає, що невикористані ресурси залишатимуться в пам'яті деякий час, перш ніж будуть видалені.
Посібники
Властивості
|
||
|
||
|
||
Методи
_get_rid() virtual const |
|
void |
_reset_state() virtual |
void |
_set_path_cache(path: String) virtual const |
void |
_setup_local_to_scene() virtual |
duplicate_deep(deep_subresources_mode: DeepDuplicateMode = 1) const |
|
void |
|
generate_scene_unique_id() static |
|
get_id_for_path(path: String) const |
|
get_local_scene() const |
|
get_rid() const |
|
is_built_in() const |
|
void |
|
void |
set_id_for_path(path: String, id: String) |
void |
set_path_cache(path: String) |
void |
|
void |
take_over_path(path: String) |
Сигнали
changed() 🔗
Випробувано при зміні ресурсу, зазвичай при одному з його властивостей. Дивись також emit_changed().
Примітка: Цей сигнал не вдається автоматично для властивостей користувацьких ресурсів. Якщо необхідно, щоб випромінити сигнал.
setup_local_to_scene_requested() 🔗
Застаріло: This signal is only emitted when the resource is created. Override _setup_local_to_scene() instead.
Видається щойно продубльованим ресурсом зі значенням resource_local_to_scene, встановленим на true.
Переліки
enum DeepDuplicateMode: 🔗
DeepDuplicateMode DEEP_DUPLICATE_NONE = 0
Жодні підресурси не дублюються. Це корисно навіть при глибокому дублюванні, щоб усі масиви та словники були продубльовані, але все ще вказували на оригінальні ресурси.
DeepDuplicateMode DEEP_DUPLICATE_INTERNAL = 1
Будуть дубльовані лише підресурси без шляху або з локальним для сцени шляхом.
DeepDuplicateMode DEEP_DUPLICATE_ALL = 2
Кожен знайдений підресурс буде продубльовано, навіть якщо він має нелокальний шлях. Іншими словами, навіть потенційно великі ресурси, що зберігаються окремо, будуть продубльовані.
Описи властивостей
bool resource_local_to_scene = false 🔗
Якщо true, ресурс дублюється для кожного екземпляра всіх сцен, використовуючи його. На run-time ресурс може бути змінений в одному місці без впливу інших екземплярів (див. PackedScene.instantiate()).
Примітка: Зміна цього майна на run-time не впливає на вже створених дублікатів ресурсів.
Додаткове найменування цього ресурсу. При визначенні його значення відображаються для відображення ресурсу в Інспекції. Для вбудованих сценаріїв ім'я відображається як частина назви вкладки в редакторі скриптів.
Примітка: Деякі ресурсні формати не підтримують назви ресурсів. Ви можете встановити ім'я в редакторі або через код, але він буде втрачено, коли ресурс перезавантажений. Наприклад, лише вбудовані скрипти можуть мати назву ресурсу, при цьому скрипти зберігаються в окремих файлах не можуть.
Унікальний шлях до цього ресурсу. Якщо він був збережений на диск, значення буде його файлопатією. Якщо ресурс знаходиться виключно в межах сцени, значення буде файлова система PackedScene, а також унікальний ідентифікатор.
Примітка: Встановити цю властивість вручну може призвести до того, що ресурс з тим же шляхом вже був раніше завантажений. При необхідності використовується take_over_path().
String resource_scene_unique_id 🔗
Унікальний ідентифікатор відносно сцени цього ресурсу. Якщо залишити порожнім, ідентифікатор автоматично генерується, коли цей ресурс зберігається всередині PackedScene. Якщо ресурс не знаходиться всередині сцени, ця властивість за замовчуванням порожня.
Примітка: Коли PackedScene зберігається, якщо кілька ресурсів в одній сцені використовують однаковий ідентифікатор, лише найдавніший ресурс в ієрархії сцени зберігає оригінальний ідентифікатор. Іншим ресурсам призначаються нові ідентифікатори з generate_scene_unique_id().
Примітка: Встановлення цієї властивості не генерує сигнал changed.
Попередження: Під час встановлення ідентифікатор повинен складатися лише з літер, цифр та символів підкреслення. В іншому випадку це призведе до помилки та за замовчуванням буде використано випадково згенерований ідентифікатор.
Описи методів
RID _get_rid() virtual const 🔗
Перевизначте цей метод, щоб повернути власний RID, коли викликається get_rid().
void _reset_state() virtual 🔗
Для ресурсів, стан яких зберігається в неекспортованих властивостях, таких як Object._validate_property() або Object._get_property_list(), цей метод має бути реалізований для їх очищення.
void _set_path_cache(path: String) virtual const 🔗
Перевизначте цей метод, щоб виконати додаткову логіку після виклику set_path_cache() для цього об'єкта.
void _setup_local_to_scene() virtual 🔗
Перевизначте цей метод, щоб налаштувати щойно дубльований ресурс, створений за допомогою PackedScene.instantiate(), якщо для resource_local_to_scene оригіналу встановлено значення true.
Приклад: Встановіть випадкове значення шкоди для кожного локального ресурсу зі створеної сцени:
розширює ресурс
var damage = 0
func _setup_local_to_scene():
damage = randi_range(10, 40)
Resource duplicate(deep: bool = false) const 🔗
Дублює цей ресурс, повертаючи новий ресурс з його властивостями exported або @GlobalScope.PROPERTY_USAGE_STORAGE, скопійованими з оригіналу.
Якщо deep має значення false, повертається неглибока копія: вкладені властивості Array, Dictionary та Resource не дублюються та використовуються спільно з оригінальним ресурсом.
Якщо deep має значення true, повертається глибока копія: усі вкладені масиви, словники та упаковані масиви також дублюються (рекурсивно). Будь-який Resource, знайдений всередині, буде продубльовано лише в тому випадку, якщо він локальний, як-от DEEP_DUPLICATE_INTERNAL, що використовується з duplicate_deep().
Застосовуються такі винятки:
Властивості підресурсу з прапорцем @GlobalScope.PROPERTY_USAGE_ALWAYS_DUPLICATE завжди дублюються (рекурсивно чи ні, залежно від
deep).Властивості підресурсу з прапорцем @GlobalScope.PROPERTY_USAGE_NEVER_DUPLICATE ніколи не дублюються.
Примітка: Для користувацьких ресурсів цей метод завершиться невдачею, якщо Object._init() було визначено з обов'язковими параметрами.
Примітка: Під час дублювання з deep, встановленим на true, кожен знайдений ресурс, включаючи той, для якого викликається цей метод, буде дублюватися лише один раз і на нього буде посилатися стільки разів, скільки потрібно в дублікаті. Наприклад, якщо ви дублюєте ресурс A, на який посилатися ресурс B двічі, ви отримаєте новий ресурс A', який посилатиметься на новий ресурс B' двічі.
Resource duplicate_deep(deep_subresources_mode: DeepDuplicateMode = 1) const 🔗
Дублює цей ресурс, глибоко, подібно до duplicate()(true), з додатковим контролем над обробкою підресурсів.
deep_subresources_mode має бути одним із значень з DeepDuplicateMode.
void emit_changed() 🔗
Випромінює сигнал changed. Цей метод викликається автоматично для деяких вбудованих ресурсів.
Примітка: Для користувацьких ресурсів рекомендується викликати цей метод щоразу, коли відбувається значуща зміна, така як зміна властивості. Це гарантує, що користувацькі Object, що залежать від ресурсу, будуть належним чином оновлені.
var damage:
set(new_value):
if damage != new_value:
damage = new_value
emit_changed()
String generate_scene_unique_id() static 🔗
Сформує унікальний ідентифікатор ресурсу, який міститься всередині PackedScene, заснований на поточній дати, часу та випадковому значенні. Повернутий рядок складається з літер (a до y) і чисел (0 до 8). Дивитися також resource_scene_unique_id.
String get_id_for_path(path: String) const 🔗
З внутрішнього кешу для унікальних ідентифікаторів сцени повертає ідентифікатор цього ресурсу для сцени за адресою path. Якщо запис відсутній, повертається порожній рядок. Корисно для збереження унікальних ідентифікаторів сцени однаковими під час реалізації зручного для VCS формату користувацького ресурсу шляхом розширення ResourceFormatLoader та ResourceFormatSaver.
Примітка: Цей метод реалізовано лише під час роботи в контексті редактора. Під час виконання він повертає порожній рядок.
Node get_local_scene() const 🔗
Якщо resource_local_to_scene встановлюється на true і ресурс був завантажений з PackedScene миттєве позначення, повертає корінь Node сцени, де використовується цей ресурс. В іншому випадку повертається null.
Повернення RID цього ресурсу (або порожній RID). Багато ресурсів (наприклад, Texture2D, Mesh, і так далі) є високорівневі абстракції ресурсів, що зберігаються в спеціалізованому сервері (DisplayServer, RenderingServer і т.д.), тому ця функція повернеться оригінальним RID.
Повертає true, якщо ресурс збережено на диску як частина файлу іншого ресурсу.
void reset_state() 🔗
Очищає неекспортовані властивості ресурсу. Див. також _reset_state(). Корисно під час реалізації власного формату ресурсу шляхом розширення ResourceFormatLoader та ResourceFormatSaver.
void set_id_for_path(path: String, id: String) 🔗
У внутрішньому кеші для унікальних ідентифікаторів сцени встановлює ідентифікатор цього ресурсу на id для сцени за адресою path. Якщо id порожній, запис кешу для path очищається. Корисно для збереження унікальних ідентифікаторів сцени однаковими під час реалізації зручного для VCS формату користувацького ресурсу шляхом розширення ResourceFormatLoader та ResourceFormatSaver.
Примітка: Цей метод реалізовано лише під час роботи в контексті редактора.
void set_path_cache(path: String) 🔗
Встановлює шлях ресурсу на path без залучення кешу ресурсів. Корисно для обробки значень CacheMode під час реалізації власного формату ресурсу шляхом розширення ResourceFormatLoader та ResourceFormatSaver.
void setup_local_to_scene() 🔗
Застаріло: This method should only be called internally.
Дзвінки _setup_local_to_scene(). Якщо ресурс_local_to_scene встановлюється на true, цей метод автоматично називається PackedScene.instantiate() новим дублікованим ресурсом в екземплярі сцени.
void take_over_path(path: String) 🔗
Налаштовує наявний запис кешу для цього шляху. Подальші спроби навантажити перевантажений ресурс шляхом повернення цього ресурсу.