layer-groupОсновы UI

Добавление UI в вашу игру требует написания кода, но с помощью ИИ создавать сложные интерактивные интерфейсы значительно проще


Добавление пользовательского интерфейса в вашу игру требует написания кода, но как только вы освоите несколько шаблонов, вы сможете быстро создавать аккуратные, масштабируемые интерфейсы. Это руководство проводит вас через пошаговый учебник, который завершается полным примером диалога.

circle-info

Весь интерфейс игрока должен отрисовываться внутри стека вызовов ao_late_update и быть обёрнутым в is_local_or_server(). Это предотвращает появление интерфейса у неправильного клиента.

В любой момент вы можете перейти к Справке по UI для получения дополнительных шаблонов и более подробной информации.

Шаг 1: Создайте точку входа для UI

Весь интерактивный интерфейс должен отрисовываться из локального ao_late_update:

Player :: class : Player_Base {
    ao_late_update :: method(dt: float) {
        if this->is_local_or_server() {
            draw_ui(this);
        }
    }
}

Шаг 2: Начните с прямоугольника экрана

Экранный UI всегда должен выводиться из UI.get_safe_screen_rect() или UI.get_screen_rect(). Помните: (0, 0) — это нижний левый угол, и координата Y растёт вверх.

draw_ui :: proc(player: Player) {
    screen := UI.get_safe_screen_rect();

    // Простой центрированный панель
    panel := screen->center_rect()->grow(120, 200, 120, 200);
    UI.quad(panel, core_globals.white_sprite, {0, 0, 0, 0.7});
}

Шаг 3: Используйте Cut для раскладки

При размещении нескольких элементов вырезайте пространство из прямоугольника вместо того, чтобы позиционировать всё от одного и того же начала.

Шаг 4: Добавьте текст

Используйте настройки текста для управления размером, цветом и выравниванием.

Шаг 5: Добавьте кнопки

Кнопки объединяют раскладку и взаимодействие. Используйте спрайт кнопки из поставляемых движком ассетов (см. Справке по UI для получения дополнительной информации).

Шаг 6: Постройте диалог

Теперь объедините все шаги в повторно используемую раскладку диалога.

Последнее обновление