Performance
Успадковує: Object
Виставки даних, пов'язані з виконанням.
Опис
Цей клас надає доступ до кількості різних моніторів, пов'язаних з виконанням, таких як використання пам'яті, дзвінки та FPS. Це те ж саме, що значення відображаються в панелі Monitor Налагоджувач. Використовуючи get_monitor() цього класу, ви можете отримати дані з вашого коду.
Ви можете додати користувацькі монітори за допомогою методу add_custom_monitor(). Призначені для користувача монітори Monitor вкладка редактора Debugger разом з вбудованими моніторами.
Примітка: Деякі з вбудованих моніторів доступні тільки в режимі налагодження і завжди повернеться 0 при використанні в проекті, що експортується в режимі релізу.
Примітка: Деякі з вбудованих моніторів не оновлюються в режимі реального часу з причин виконання, тому може бути затримка до 1 другого між змінами.
Примітка: Призначені для користувача монітори не підтримують негативні значення. Негативні значення затискаються до 0.
Методи
void |
add_custom_monitor(id: StringName, callable: Callable, arguments: Array = []) |
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
Кількість дитячих вершин, тобто вузлів, які не батьківуються в вершину ялинки. *Lower краще *
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.
Описи методів
void add_custom_monitor(id: StringName, callable: Callable, arguments: Array = []) 🔗
Додає спеціальний монітор із назвою 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.
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 вже відсутня.