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.

CanvasGroup

Успадковує: Node2D < CanvasItem < Node < Object

Об’єднує кілька 2D вузлів в одну операцію малювання.

Опис

Дочірні вузли CanvasItem об'єкта CanvasGroup малюються як один об'єкт. Це дозволяє, наприклад, малювати перекриваючі напівпрозорі 2D-вузли, не роблячи перекриваючі ділянки більш непрозорими, ніж передбачалося (для досягнення цього ефекту встановіть властивість CanvasItem.self_modulate об'єкта CanvasGroup).

Примітка: Об'єкт CanvasGroup використовує власний шейдер для зчитування з бекбуфера для малювання своїх дочірніх об'єктів. Призначення Material об'єкту CanvasGroup перевизначає вбудований шейдер. Щоб дублювати поведінку вбудованого шейдера у власному Shader, використовуйте наступне:

shader_type canvas_item;
render_mode unshaded;

uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, filter_nearest;

void fragment() {
    vec4 c = textureLod(screen_texture, SCREEN_UV, 0.0);

    if (c.a > 0.0001) {
        c.rgb /= c.a;
    }

    COLOR *= c;
}

Примітка: Оскільки CanvasGroup та CanvasItem.clip_children використовують зворотний буфер, дочірні елементи CanvasGroup, у яких CanvasItem.clip_children встановлено значення, відмінне від CanvasItem.CLIP_CHILDREN_DISABLED, не працюватимуть належним чином.

Властивості

float

clear_margin

10.0

float

fit_margin

10.0

bool

use_mipmaps

false


Описи властивостей

float clear_margin = 10.0 🔗

  • void set_clear_margin(value: float)

  • float get_clear_margin()

Встановлює розмір поля, яке використовується для розширення прямокутника очищення цієї CanvasGroup. Це розширить область заднього буфера, яка буде використовуватися CanvasGroup. Менший запас зменшить площу використовуваного резервного буфера, що може підвищити продуктивність, однак, якщо use_mipmaps увімкнено, малий запас може призвести до помилок mipmap на краю CanvasGroup. Відповідно, його слід залишити якомога меншим, але збільшити, якщо по краях групи полотен з’являються артефакти.


float fit_margin = 10.0 🔗

  • void set_fit_margin(value: float)

  • float get_fit_margin()

Встановлює розмір поля, яке використовується для розширення прямокутника, який можна намалювати, цієї CanvasGroup. Розмір CanvasGroup визначається підгонкою прямокутника навколо його дочірніх елементів, а потім розширенням прямокутника на fit_margin. Це збільшує як використовувану область зворотного буфера, так і область, охоплену CanvasGroup, що може знизити продуктивність. Він має бути якомога меншим і розширюватися лише тоді, коли потрібно збільшити розмір (наприклад, для спеціальних ефектів шейдерів).


bool use_mipmaps = false 🔗

  • void set_use_mipmaps(value: bool)

  • bool is_using_mipmaps()

Якщо true, перед малюванням CanvasGroup обчислюються міп-мапи для буфера відтворення, щоб їх можна було використовувати у власному ShaderMaterial, приєднаному до CanvasGroup. Створення міп-мап знижує продуктивність, тому цю опцію слід вмикати лише за необхідності.