Performance

Успадковує: Object

Виставки даних, пов'язані з виконанням.

Опис

Цей клас надає доступ до кількості різних моніторів, пов'язаних з виконанням, таких як використання пам'яті, дзвінки та FPS. Це те ж саме, що значення відображаються в панелі Monitor Налагоджувач. Використовуючи get_monitor() цього класу, ви можете отримати дані з вашого коду.

Ви можете додати користувацькі монітори за допомогою методу add_custom_monitor(). Призначені для користувача монітори Monitor вкладка редактора Debugger разом з вбудованими моніторами.

Примітка: Деякі з вбудованих моніторів доступні тільки в режимі налагодження і завжди повернеться 0 при використанні в проекті, що експортується в режимі релізу.

Примітка: Деякі з вбудованих моніторів не оновлюються в режимі реального часу з причин виконання, тому може бути затримка до 1 другого між змінами.

Примітка: Призначені для користувача монітори не підтримують негативні значення. Негативні значення затискаються до 0.

Методи

void

add_custom_monitor(id: StringName, callable: Callable, arguments: Array = [])

Variant

get_custom_monitor(id: StringName)

Array[StringName]

get_custom_monitor_names()

float

get_monitor(monitor: Monitor) const

int

get_monitor_modification_time()

bool

has_custom_monitor(id: StringName)

void

remove_custom_monitor(id: StringName)


Переліки

enum Monitor: 🔗

Monitor TIME_FPS = 0

Кількість кадрів, що надходять в останній другий. Цей метричний тільки оновлюється один раз на секунду, навіть якщо передається частіше. *Висока якість *

Monitor TIME_PROCESS = 1

Часом було завершення однієї рами. *Lower краще *

Monitor TIME_PHYSICS_PROCESS = 2

Часом було завершення однієї фізики кадру, за секундами. *Lower краще *

Monitor TIME_NAVIGATION_PROCESS = 3

Час, коли він взяв, щоб завершити один навігаційний крок, за секундами. Це включає оновлення навігаційної карти, а також обчислення агента. *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, не рекомендується викликати його кожного кадру.

Monitor NAVIGATION_ACTIVE_MAPS = 24

Кількість активних навігаційних карт у NavigationServer2D та NavigationServer3D. Це також включає дві порожні навігаційні карти за замовчуванням, створені World2D та World3D.

Monitor NAVIGATION_REGION_COUNT = 25

Кількість активних областей навігації в NavigationServer2D та NavigationServer3D.

Monitor NAVIGATION_AGENT_COUNT = 26

Кількість активних навігаційних агентів, що обробляють уникнення в NavigationServer2D та NavigationServer3D.

Кількість активних навігаційних посилань у NavigationServer2D та NavigationServer3D.

Monitor NAVIGATION_POLYGON_COUNT = 28

Кількість полігонів навігаційної сітки в NavigationServer2D та NavigationServer3D.

Monitor NAVIGATION_EDGE_COUNT = 29

Кількість ребер полігону навігаційної сітки в NavigationServer2D та NavigationServer3D.

Monitor NAVIGATION_EDGE_MERGE_COUNT = 30

Кількість ребер полігону навігаційної сітки, які було об'єднано через перекриття ключів ребер у NavigationServer2D та NavigationServer3D.

Monitor NAVIGATION_EDGE_CONNECTION_COUNT = 31

Кількість ребер полігону, які вважаються з'єднаними за близькістю ребер NavigationServer2D та NavigationServer3D.

Monitor NAVIGATION_EDGE_FREE_COUNT = 32

Кількість ребер полігону навігаційної сітки, які не вдалося об'єднати в NavigationServer2D та NavigationServer3D. Ребра все ще можуть бути з'єднані близькістю ребер або за допомогою зв'язків.

Monitor NAVIGATION_OBSTACLE_COUNT = 33

Кількість активних навігаційних перешкод у 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

Кількість конвеєрних компіляцій, запущених для оптимізації поточної сцени. Ці компіляції виконуються у фоновому режимі та не повинні спричиняти жодних зависань.

Monitor NAVIGATION_2D_ACTIVE_MAPS = 39

Кількість активних навігаційних карт у NavigationServer2D. Це також включає дві порожні навігаційні карти за замовчуванням, створені World2D.

Monitor NAVIGATION_2D_REGION_COUNT = 40

Кількість активних областей навігації в NavigationServer2D.

Monitor NAVIGATION_2D_AGENT_COUNT = 41

Кількість активних навігаційних агентів, що обробляють уникнення в NavigationServer2D.

Кількість активних навігаційних посилань у NavigationServer2D.

Monitor NAVIGATION_2D_POLYGON_COUNT = 43

Кількість полігонів навігаційної сітки в NavigationServer2D.

Monitor NAVIGATION_2D_EDGE_COUNT = 44

Кількість ребер полігону навігаційної сітки в NavigationServer2D.

Monitor NAVIGATION_2D_EDGE_MERGE_COUNT = 45

Кількість ребер полігону навігаційної сітки, які були об'єднані через перекриття ключів ребер у NavigationServer2D.

Monitor NAVIGATION_2D_EDGE_CONNECTION_COUNT = 46

Кількість ребер полігону, які вважаються з'єднаними за близькістю ребер NavigationServer2D.

Monitor NAVIGATION_2D_EDGE_FREE_COUNT = 47

Кількість ребер полігону навігаційної сітки, які не вдалося об'єднати в NavigationServer2D. Ребра все ще можуть бути з'єднані близькістю ребер або посиланнями.

Monitor NAVIGATION_2D_OBSTACLE_COUNT = 48

Кількість активних навігаційних перешкод у NavigationServer2D.

Monitor NAVIGATION_3D_ACTIVE_MAPS = 49

Кількість активних навігаційних карт у NavigationServer3D. Це також включає дві порожні навігаційні карти за замовчуванням, створені World3D.

Monitor NAVIGATION_3D_REGION_COUNT = 50

Кількість активних навігаторів в NavigationServer3D.

Monitor NAVIGATION_3D_AGENT_COUNT = 51

Кількість Активних навігаційних агентів, що переробляються, в NavigationServer3D.

Кількість активних навігаторів в NavigationServer3D.

Monitor NAVIGATION_3D_POLYGON_COUNT = 53

Кількість навігаторів сітки в NavigationServer3D.

Monitor NAVIGATION_3D_EDGE_COUNT = 54

Кількість навігаційних сітчастих полігонів в NavigationServer3D.

Monitor NAVIGATION_3D_EDGE_MERGE_COUNT = 55

Кількість навігаційних сітчастих полігонних країв, які були об'єднані через крайовий ключ перекриття в NavigationServer3D.

Monitor NAVIGATION_3D_EDGE_CONNECTION_COUNT = 56

Кількість полігонних країв, які розглядаються за межі NavigationServer3D.

Monitor NAVIGATION_3D_EDGE_FREE_COUNT = 57

Кількість навігаційних сітчастих полігонних країв, які не можуть бути об'єднані в NavigationServer3D. Краї все-таки можуть бути підключені до краю поруч або з посиланнями.

Monitor NAVIGATION_3D_OBSTACLE_COUNT = 58

Кількість активних навігаційних перешкод у 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

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

Об’єкти, що викликаються, викликаються з аргументами, наданими в масиві аргументів.


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 на консоль.

Перегляньте 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 вже відсутня.