Коли і як уникати використання вузлів для всього
Вузли дешеві у виробництві, але навіть вони мають свої межі. Проєкт може мати десятки тисяч вузлів, які все роблять. Чим складнішою є їх поведінка, тим більше напруження кожен з них додає до проєкту.
Godot забезпечує легкіші об'єкти для створення API, які використовують вузли. Обов’язково пам’ятайте про них, як про варіанти, під час розробки функцій свого проєкту.
Object: Самий легкий об'єкт, оригінальний Об'єкт повинен використовувати ручне управління пам'яттю. З огляду на це, не надто складно створити свої власні структури даних, навіть структури вузлів, які також легші за клас Node.
Зразок: Дивіться вузол Tree. Він підтримує високий рівень налаштування змісту із довільною кількістю рядків і стовпців. Дані, які він використовує для створення своєї візуалізації, насправді є деревом об'єктів TreeItem.
Переваги: Спрощення власного API для об’єктів меншого масштабу допомагає покращити його доступність і покращити час ітерації. Замість того, щоб працювати з усією бібліотекою Вузлів, ви створюєте скорочений набір Об’єктів, з яких вузол може генерувати та управляти відповідними під-вузлами.
Примітка
Потрібно бути обережним при поводженні з ними. Можна зберегти об’єкт у змінній, але ці посилання без попередження можуть стати недійсними. Наприклад, якщо творець об’єкта вирішить видалити його з нізвідки, це спричинить стан помилки, при наступній спробі отримати доступ до нього.
RefCounted: Тільки трохи складніше, ніж Object. Вони відстежують посилання на себе, видаляючи завантажену пам’ять лише тоді, коли ні існують інші посилання на себе. Це корисно в більшості випадків, коли потрібні дані в спеціальному класі.
Приклад: Перегляньте об’єкт FileAccess. Він функціонує так само, як звичайний об’єкт, за винятком того, що його не потрібно видаляти самостійно.
** Переваги: ** ті самі, що і в Об'єкта.
Resource: Лише трохи складніше, ніж RefCounted. Вони мають вроджену здатність серіалізувати/десеріалізувати (тобто зберігати та завантажувати) свої властивості об’єктів до/з файлів ресурсів Godot.
Приклад: Сценарії, PackedScene (для файлів сцен) та інші типи, такі як кожен із класів AudioEffect. Кожне з них можна зберегти та завантажити, тому вони поширюються з Resource.
Переваги: Багато already been said про переваги Resource над традиційними даними способи зберігання. Однак у контексті використання Resources over Nodes їх головною перевагою є сумісність з Inspector. Хоча майже така ж легка, як Object/RefCounted, вони все ще можуть відображати та експортувати властивості в інспекторі. Це дозволяє їм виконувати завдання, схожі на підвузли щодо зручності використання, але також підвищити продуктивність, якщо планується мати багато таких ресурсів/вузлів у своїх сценах.