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.
Checking the stable version of the documentation...
Performance
Успадковує: Object
Виставки даних, пов'язані з виконанням.
Опис
Цей клас надає доступ до кількості різних моніторів, пов'язаних з виконанням, таких як використання пам'яті, дзвінки та FPS. Це те ж саме, що значення відображаються в панелі Monitor Налагоджувач. Використовуючи get_monitor() цього класу, ви можете отримати дані з вашого коду.
Ви можете додати користувацькі монітори за допомогою методу add_custom_monitor(). Призначені для користувача монітори Monitor вкладка редактора Debugger разом з вбудованими моніторами.
Примітка: Деякі з вбудованих моніторів доступні тільки в режимі налагодження і завжди повернеться 0 при використанні в проекті, що експортується в режимі релізу.
Примітка: Деякі з вбудованих моніторів не оновлюються в режимі реального часу з причин виконання, тому може бути затримка до 1 другого між змінами.
Примітка: Призначені для користувача монітори не підтримують негативні значення. Негативні значення затискаються до 0.
Методи
void |
add_custom_monitor(id: StringName, callable: Callable, arguments: Array = [], type: MonitorType = 0) |
get_monitor(monitor: Monitor) const |
|
void |
Переліки
enum Monitor: 🔗
Monitor TIME_FPS = 0
Кількість кадрів, що надходять в останній другий. Цей метричний тільки оновлюється один раз на секунду, навіть якщо передається частіше. *Висока якість *
Monitor TIME_PROCESS = 1
Часом було завершення однієї рами. *Lower краще *
Monitor TIME_PHYSICS_PROCESS = 2
Часом було завершення однієї фізики кадру, за секундами. *Lower краще *
Час, коли він взяв, щоб завершити один навігаційний крок, за секундами. Це включає оновлення навігаційної карти, а також обчислення агента. *Lower краще *
Monitor MEMORY_STATIC = 4
Статична пам'ять в даний час використовується, в байтах. Не доступний в збірних конструкціях. *Lower краще *
Monitor MEMORY_STATIC_MAX = 5
Доступна статична пам'ять. Не доступний в збірних конструкціях. *Lower краще *
Monitor MEMORY_MESSAGE_BUFFER_MAX = 6
Найбільша кількість пам'яті черги повідомлення використовується буфер, в байтах. Перевірка повідомлень використовується для відстрочених функцій дзвінків та повідомлень. *Lower краще *
Monitor OBJECT_COUNT = 7
Кількість об'єктів в даний час миттєво (включаючи вузли). *Lower краще *
Monitor OBJECT_RESOURCE_COUNT = 8
Кількість ресурсів в даний час використовується. *Lower краще *
Monitor OBJECT_NODE_COUNT = 9
Кількість вузлів, які в даний час миттєво опрацьовуються на ялинці. Це також включає в себе кореневу вершину. *Lower краще *
Monitor OBJECT_ORPHAN_NODE_COUNT = 10
Кількість вузлів-сиріт, тобто вузлів, які не є батьківськими для вузла дерева сцени. Чим менше, тим краще.
Примітка: Це доступно лише в режимі налагодження та завжди повертатиме 0 при використанні в проекті, експортованому в режимі випуску.
Monitor RENDER_TOTAL_OBJECTS_IN_FRAME = 11
Загальна кількість об'єктів в останньому рендері. Ця метрика не включає в себе культові об'єкти (наприклад, за допомогою прихожих вузлів, фрусу, кульлінгу або оклюзії). *Lower краще *
Monitor RENDER_TOTAL_PRIMITIVES_IN_FRAME = 12
Загальна кількість вершин або індексів, що надаються в останньому рендері. Ця метрика не включає в себе примітиви з кульових об'єктів (або за допомогою прихожих вузлів, фрусту або оклюзійного культування). У зв'язку з перепадом глибини і тіні, кількість примітивів завжди вище фактичної кількості вершин на сцені (типово подвійний або потрійний оригінальний показник вершини). *Lower краще *
Monitor RENDER_TOTAL_DRAW_CALLS_IN_FRAME = 13
Загальна кількість дзвінків, що виконуються в останньому рендері. Ця метрика не включає в себе культові об'єкти (всередині за допомогою прихожих вузлів, фрусту, кульлінгу або оклюзії), так як вони не призводять до ударних дзвінків. *Lower краще *
Monitor RENDER_VIDEO_MEM_USED = 14
Кількість використовуваних відео пам'яті (текстур і запам'ятовування вершини, в байтах). З цього метричного також включає в себе неоднозначні виділення, це значення завжди більше, ніж сума RENDER_TEXTURE_MEM_USED і RENDER_BUFFER_MEM_USED. *Lower краще *
Monitor RENDER_TEXTURE_MEM_USED = 15
Кількість фактурної пам'яті (в байтах). *Lower краще *
Monitor RENDER_BUFFER_MEM_USED = 16
Кількість рендерної пам'яті (в байтах). *Lower краще *
Monitor PHYSICS_2D_ACTIVE_OBJECTS = 17
Кількість активних RigidBody2D вузлів в грі. *Lower краще *
Monitor PHYSICS_2D_COLLISION_PAIRS = 18
Кількість пар зіткнення в фізичному двигуні 2D. *Lower краще *
Monitor PHYSICS_2D_ISLAND_COUNT = 19
Кількість островів в фізиці 2D. *Lower краще *
Monitor PHYSICS_3D_ACTIVE_OBJECTS = 20
Кількість активних RigidBody3D і VehicleBody3D вершини в грі. *Lower краще *
Monitor PHYSICS_3D_COLLISION_PAIRS = 21
Кількість пар зіткнення в фізиці 3D. *Lower краще *
Monitor PHYSICS_3D_ISLAND_COUNT = 22
Кількість островів в фізиці 3D. *Lower краще *
Monitor AUDIO_OUTPUT_LATENCY = 23
Затримка виводу AudioServer. Еквівалентно виклику методу AudioServer.get_output_latency, не рекомендується викликати його кожного кадру.
Кількість активних навігаційних карт у NavigationServer2D та NavigationServer3D. Це також включає порожні навігаційні карти за замовчуванням, створені екземплярами World2D та World3D.
Кількість активних областей навігації в NavigationServer2D та NavigationServer3D.
Кількість активних навігаційних агентів, що обробляють уникнення в NavigationServer2D та NavigationServer3D.
Кількість активних навігаційних посилань у NavigationServer2D та NavigationServer3D.
Кількість полігонів навігаційної сітки в NavigationServer2D та NavigationServer3D.
Кількість ребер полігону навігаційної сітки в NavigationServer2D та NavigationServer3D.
Кількість ребер полігону навігаційної сітки, які було об'єднано через перекриття ключів ребер у NavigationServer2D та NavigationServer3D.
Кількість ребер полігону, які вважаються з'єднаними за близькістю ребер NavigationServer2D та NavigationServer3D.
Кількість ребер полігону навігаційної сітки, які не вдалося об'єднати в NavigationServer2D та NavigationServer3D. Ребра все ще можуть бути з'єднані близькістю ребер або за допомогою зв'язків.
Кількість активних навігаційних перешкод у NavigationServer2D та NavigationServer3D.
Monitor PIPELINE_COMPILATIONS_CANVAS = 34
Кількість конвеєрних компіляцій, ініційованих засобом візуалізації 2D-полотна.
Monitor PIPELINE_COMPILATIONS_MESH = 35
Кількість конвеєрних компіляцій, ініційованих завантаженням сіток. Ці компіляції відображатимуться як довший час завантаження під час першого запуску гри користувачем і потрібен конвеєр.
Monitor PIPELINE_COMPILATIONS_SURFACE = 36
Кількість компіляцій конвеєра, які були запущені шляхом створення кешу поверхні перед рендерингом сцени. Ці компіляції відображатимуться як заїкання під час завантаження сцени, коли користувач вперше запускає гру, і конвеєр потрібен.
Monitor PIPELINE_COMPILATIONS_DRAW = 37
Кількість конвеєрних компіляцій, які були запущені під час малювання сцени. Ці компіляції відображатимуться як заїкання під час гри, коли користувач запускає гру вперше, і потрібен конвеєр.
Monitor PIPELINE_COMPILATIONS_SPECIALIZATION = 38
Кількість конвеєрних компіляцій, запущених для оптимізації поточної сцени. Ці компіляції виконуються у фоновому режимі та не повинні спричиняти жодних зависань.
Кількість активних навігаційних карт у NavigationServer2D. Це також включає порожні навігаційні карти за замовчуванням, створені екземплярами World2D.
Кількість активних областей навігації в NavigationServer2D.
Кількість активних навігаційних агентів, що обробляють уникнення в NavigationServer2D.
Кількість активних навігаційних посилань у NavigationServer2D.
Кількість полігонів навігаційної сітки в NavigationServer2D.
Кількість ребер полігону навігаційної сітки в NavigationServer2D.
Кількість ребер полігону навігаційної сітки, які були об'єднані через перекриття ключів ребер у NavigationServer2D.
Кількість ребер полігону, які вважаються з'єднаними за близькістю ребер NavigationServer2D.
Кількість ребер полігону навігаційної сітки, які не вдалося об'єднати в NavigationServer2D. Ребра все ще можуть бути з'єднані близькістю ребер або посиланнями.
Кількість активних навігаційних перешкод у NavigationServer2D.
Кількість активних навігаційних карт у NavigationServer3D. Це також включає порожні навігаційні карти за замовчуванням, створені екземплярами World3D.
Кількість активних навігаторів в NavigationServer3D.
Кількість Активних навігаційних агентів, що переробляються, в NavigationServer3D.
Кількість активних навігаторів в NavigationServer3D.
Кількість навігаторів сітки в NavigationServer3D.
Кількість навігаційних сітчастих полігонів в NavigationServer3D.
Кількість навігаційних сітчастих полігонних країв, які були об'єднані через крайовий ключ перекриття в NavigationServer3D.
Кількість полігонних країв, які розглядаються за межі NavigationServer3D.
Кількість навігаційних сітчастих полігонних країв, які не можуть бути об'єднані в NavigationServer3D. Краї все-таки можуть бути підключені до краю поруч або з посиланнями.
Кількість активних навігаційних перешкод у NavigationServer3D.
Monitor MONITOR_MAX = 59
Представляємо розмір Monitor enum.
enum MonitorType: 🔗
MonitorType MONITOR_TYPE_QUANTITY = 0
Вивід монітора форматується як ціле число.
MonitorType MONITOR_TYPE_MEMORY = 1
Вивід монітора форматується як пам'ять комп'ютера. Надіслані значення повинні представляти певну кількість байтів.
MonitorType MONITOR_TYPE_TIME = 2
Вивід монітора відформатовано як час у мілісекундах. Надіслані значення повинні представляти час у секундах (а не мілісекундах).
MonitorType MONITOR_TYPE_PERCENTAGE = 3
Вивід монітора відформатовано у відсотках. Надіслані значення повинні представляти дробове число, а не безпосередньо відсоток, наприклад, 0,5 для 50,00%.
Описи методів
void add_custom_monitor(id: StringName, callable: Callable, arguments: Array = [], type: MonitorType = 0) 🔗
Додає спеціальний монітор із назвою id. Ви можете вказати категорію монітора за допомогою скісної риски в id (наприклад: "Game/NumberOfNPCs"). Якщо існує більше одного роздільника похилої риски, використовується категорія за замовчуванням. Типовою категорією є "Custom". Виводить повідомлення про помилку, якщо даний id уже присутній.
func _ready():
var monitor_value = Callable(self, "get_monitor_value")
# Додає монітор з назвою "MyName" до категорії "MyCategory".
Performance.add_custom_monitor("MyCategory/MyMonitor", monitor_value)
# Додає монітор з назвою "MyName" до категорії "Custom".
# Примітка: "MyCategory/MyMonitor" і "MyMonitor" мають однакові назви, але різні ідентифікатори, тому код дійсний.
Performance.add_custom_monitor("MyMonitor", monitor_value)
# Додає монітор з назвою "MyName" до категорії "Custom".
# Примітка: "MyMonitor" і "Custom/MyMonitor" мають однакову назву та однакову категорію, але різні ідентифікатори, тому код дійсний.
Performance.add_custom_monitor("Custom/MyMonitor", monitor_value)
# Додає монітор із назвою "MyCategoryOne/MyCategoryTwo/MyMonitor" до категорії "Custom".
Performance.add_custom_monitor("MyCategoryOne/MyCategoryTwo/MyMonitor", monitor_value)
func get_monitor_value():
return randi() % 25
public override void _Ready()
{
var monitorValue = new Callable(this, MethodName.GetMonitorValue);
// Додає монітор із назвою "MyName" до категорії "MyCategory".
Performance.AddCustomMonitor("MyCategory/MyMonitor", monitorValue);
// Додає монітор із назвою "MyName" до категорії "Custom".
// Примітка: «MyCategory/MyMonitor» і «MyMonitor» мають однакові назви, але різні ідентифікатори, тому код дійсний.
Performance.AddCustomMonitor("MyMonitor", monitorValue);
// Додає монітор із назвою "MyName" до категорії "Custom".
// Примітка: "MyMonitor" і "Custom/MyMonitor" мають однакову назву та однакову категорію, але різні ідентифікатори, тому код дійсний.
Performance.AddCustomMonitor("Custom/MyMonitor", monitorValue);
// Додає монітор із назвою "MyCategoryOne/MyCategoryTwo/MyMonitor" до категорії "Custom".
Performance.AddCustomMonitor("MyCategoryOne/MyCategoryTwo/MyMonitor", monitorValue);
}
public int GetMonitorValue()
{
return GD.Randi() % 25;
}
Налагоджувач викликає виклик, щоб отримати значення спеціального монітора. Викликається має повертати нульове або додатне ціле число або число з плаваючою комою.
Об’єкти, що викликаються, викликаються з аргументами, наданими в масиві аргументів.
Variant get_custom_monitor(id: StringName) 🔗
Повертає значення користувацького монітора з урахуванням id. Підключається, щоб отримати значення користувацького монітора. Дивись також has_custom_monitor(). Друкує помилку, якщо надана id немає.
Array[StringName] get_custom_monitor_names() 🔗
Повертає імена активних користувальницьких моніторів у Array.
PackedInt32Array get_custom_monitor_types() 🔗
Повертає значення MonitorType активних користувацьких моніторів у масиві Array.
float get_monitor(monitor: Monitor) const 🔗
Повертає значення одного з доступних вбудованих моніторів. Ви повинні надати одну з констант Monitor як аргумент, наприклад:
print(Performance.get_monitor(Performance.TIME_FPS)) # Виводить FPS на консоль.
GD.Print(Performance.GetMonitor(Performance.Monitor.TimeFps)); // Виводить FPS на консоль.
Перегляньте get_custom_monitor(), щоб запитати значення спеціальних моніторів продуктивності.
int get_monitor_modification_time() 🔗
Повертає останню клітку, в якій додано спеціальний монітор (в мікросекундах з моменту запуску двигуна). Це встановлюється до Time.get_ticks_usec(), коли монітор оновлено.
bool has_custom_monitor(id: StringName) 🔗
Повертає true, якщо користувацький монітор з даної id присутній, false інакше.
void remove_custom_monitor(id: StringName) 🔗
Видаліть користувальницький монітор з наданою id. Друкує помилку, якщо надана id вже відсутня.