Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Коли і як уникати використання вузлів для всього

Вузли дешеві у виробництві, але навіть вони мають свої межі. Проєкт може мати десятки тисяч вузлів, які все роблять. Чим складнішою є їх поведінка, тим більше напруження кожен з них додає до проєкту.

Godot забезпечує легкіші об'єкти для створення API, які використовують вузли. Обов’язково пам’ятайте про них, як про варіанти, під час розробки функцій свого проєкту.

  1. Object: Самий легкий об'єкт, оригінальний Об'єкт повинен використовувати ручне управління пам'яттю. З огляду на це, не надто складно створити свої власні структури даних, навіть структури вузлів, які також легші за клас Node.

    • Зразок: Дивіться вузол Tree. Він підтримує високий рівень налаштування змісту із довільною кількістю рядків і стовпців. Дані, які він використовує для створення своєї візуалізації, насправді є деревом об'єктів TreeItem.

    • Переваги: Спрощення власного API для об’єктів меншого масштабу допомагає покращити його доступність і покращити час ітерації. Замість того, щоб працювати з усією бібліотекою Вузлів, ви створюєте скорочений набір Об’єктів, з яких вузол може генерувати та управляти відповідними під-вузлами.

    Примітка

    Потрібно бути обережним при поводженні з ними. Можна зберегти об’єкт у змінній, але ці посилання без попередження можуть стати недійсними. Наприклад, якщо творець об’єкта вирішить видалити його з нізвідки, це спричинить стан помилки, при наступній спробі отримати доступ до нього.

  2. RefCounted: Тільки трохи складніше, ніж Object. Вони відстежують посилання на себе, видаляючи завантажену пам’ять лише тоді, коли ні існують інші посилання на себе. Це корисно в більшості випадків, коли потрібні дані в спеціальному класі.

    • Приклад: Перегляньте об’єкт FileAccess. Він функціонує так само, як звичайний об’єкт, за винятком того, що його не потрібно видаляти самостійно.

    • Переваги: такі ж, як у Об'єкта.

  3. Resource: Лише трохи складніше, ніж RefCounted. Вони мають вроджену здатність серіалізувати/десеріалізувати (тобто зберігати та завантажувати) свої властивості об’єктів до/з файлів ресурсів Godot.

    • Приклад: Сценарії, PackedScene (для файлів сцен) та інші типи, такі як кожен із класів AudioEffect. Кожне з них можна зберегти та завантажити, тому вони поширюються з Resource.

    • Переваги: Багато already been said про переваги Resource над традиційними даними способи зберігання. Однак у контексті використання Resources over Nodes їх головною перевагою є сумісність з Inspector. Хоча майже така ж легка, як Object/RefCounted, вони все ще можуть відображати та експортувати властивості в інспекторі. Це дозволяє їм виконувати завдання, схожі на підвузли щодо зручності використання, але також підвищити продуктивність, якщо планується мати багато таких ресурсів/вузлів у своїх сценах.