Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

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

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

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

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

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

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

    Примітка

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

  2. ref:RefCounted <клас_RefCounted>: Лише трохи складніший за Object. Вони відстежують посилання на себе, видаляючи завантажену пам'ять лише тоді, коли більше немає посилань на себе. Вони корисні у більшості випадків, коли потрібні дані у користувацькому класі.

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

    • ** Переваги: ** ті самі, що і в Об'єкта.

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

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

    • Переваги: Багато вже було сказано про переваги doc_resources` над традиційними методами зберігання даних. В контексті використання Ресурсів над вузлами, їх головна перевага полягає у сумісності з Інспектором. Хоча вони майже такі ж легкі, як Object/RefCounted, вони все ще можуть відображати та експортувати властивості у інспекторі. Це дозволяє їм виконувати функції, подібні до під-вузлів, з точки зору зручності використання, а також підвищити продуктивність, якщо ви плануєте мати багато таких ресурсів/вузлів у сцені.