reckfellENGINE

Разные разрешения и масштаб интерфейса

Размер окна, логический дизайн, Canvas Items, Viewport и соотношение сторон.

На этой странице

Разделяйте четыре величины: физический размер окна, логическую область дизайна, разрешение отрисовки корневого viewport и внутренний масштаб 3D. Изменение одной не является универсальным способом увеличить UI, сделать пиксельную графику резче или повысить производительность.

Выберите масштабирование корневого окна

Задайте размер дизайна в Project Settings → Display → Window → Size → Viewport Width / Height. Это базовая область содержимого, а не команда переключить разрешение монитора. Переопределение начального размера окна на ПК — отдельная настройка.

В Display → Window → Stretch выберите режим и политику соотношения сторон. В C# корневой Window доступен через GetTree().Root.

Режим StretchC# ContentScaleModeРезультат
DisabledWindow.ContentScaleModeEnum.DisabledНет растяжения от размера дизайна; остальные настройки окна/масштаба содержимого всё ещё имеют значение.
Canvas ItemsCanvasItemsЛогическое 2D-содержимое масштабируется, а отрисовка идёт в подогнанном размере окна. Подходит для UI и плавной 2D-графики.
ViewportViewportОтрисовка в разрешении на основе базового viewport, затем масштабирование готового изображения. Подходит для намеренно фиксированного низкого разрешения.

Соответствующие свойства: ContentScaleSize, ContentScaleMode, ContentScaleAspect, ContentScaleFactor. Ключи проекта: display/window/size/viewport_width, viewport_height, display/window/stretch/mode, aspect, scale.

Для дизайна 64 × 48 в окне 128 × 96 при factor 1 и Ignore проверенный Viewport даёт корневую текстуру 64 × 48; Canvas Items — 128 × 96 при масштабированном размещении 2D. Это размеры диагностического примера, не рекомендованные разрешения готовой игры.

Решите, что показывать при другом соотношении сторон

Политика AspectПоведение
KeepСохраняет базовое соотношение; при необходимости добавляет полосы.
ExpandСохраняет масштаб/пропорции, открывая дополнительную логическую ширину или высоту. Содержимое должно заполнять эту область.
Keep WidthСохраняет базовую ширину; на высоком окне открывает больше высоты, в другом направлении при необходимости оставляет полосы.
Keep HeightСохраняет базовую высоту; на широком окне открывает больше ширины, в другом направлении при необходимости оставляет полосы.
IgnoreПодгоняет без сохранения пропорций дизайна. Формы могут растягиваться неравномерно.

В нативной проверке дизайн 64 × 48 в окне 192 × 96 сохраняет логическую область 64 × 48 при Keep, а Expand открывает 96 × 48. Расширенный вид может показать незаполненный фон и объекты за пределами исходной композиции: это задача контента и вёрстки, не поломка рендерера.

Адаптируйте UI вместо масштабирования фиксированных позиций

Используйте Containers для компоновки и anchors/offsets для осмысленной привязки к краям. Проектируйте под минимальную поддерживаемую логическую область, а не только большой монитор разработчика. Проверяйте длинные переводы, прокрутку, размеры шрифтов, зоны нажатия и безопасные области на целевом устройстве. Подгонка пропорций эти задачи не решает.

ContentScaleFactor меняет масштаб всей области содержимого, а не только размер шрифта. В проверенном Canvas Items переход 1 → 2 уменьшает логическую видимую область с 64 × 48 до 32 × 24. Поэтому пользовательская настройка размера UI может потребовать перекомпоновки. Изменение размера дизайна ради крупных кнопок также способно изменить видимую область игры.

Для 3D-игры с чётким UI при необходимости снижайте отдельно разрешение 3D: см. Масштабирование разрешения. Уменьшение всего корневого viewport снижает и разрешение находящегося в нём UI. Разрешение экрана не отменяет проверку кадрирования 3D-камеры на разных пропорциях.

Сохраняйте осмысленную пиксельную графику

Используйте подходящий низкий размер дизайна, Viewport для фиксированного растра и nearest-фильтрацию ассетов, которые должны оставаться пиксельно чёткими. Дробное масштабирование может давать неодинаковую ширину пикселей. Целочисленное увеличение сохраняет целые множители, но может оставлять дополнительные поля или не помещаться в маленькое окно. Ключ настройки — display/window/stretch/scale_mode; integer-режим не гарантирует заполнение каждого окна без полос.

Движение камеры и положение спрайтов всё ещё могут быть субпиксельными. Проверяйте анимацию: чёткий неподвижный спрайт не доказывает стабильную прокрутку. Не переносите правила фильтрации pixel art без разбора на обычный UI и фотографические текстуры.

Не путайте корневой масштаб и SubViewport

У SubViewport свой выходной Size и отдельное переопределение логических координат 2D. Растягивающий SubViewportContainer управляет Size ребёнка; StretchShrink уменьшает его разрешение. Корневой ContentScaleSize не заменяет эти настройки. Исполненный пример ViewportTools и перевод координат ввода разобраны в статье Viewport.

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

Проверяйте случаи, которые выявляют ошибки

СимптомЧто проверить сначала
UI размылся после настройки производительностиНе уменьшен ли весь root viewport вместо только 3D?
Круги стали эллипсамиIgnore aspect или отдельно растянутую текстуру.
Пустые края на широком экранеExpand показывает больше мира: расширьте фон/компоновку либо выберите другую политику.
Элементы уходят за экранМинимальную логическую область, размеры Containers, anchors и переведённый текст.
Нажатия смещеныПолосы/обрезка/масштаб учтены при показе, но не при ручной передаче ввода.
Редактор отличается от отдельной игрыПодгонку встроенного игрового окна и реальный размер окна; сравнивайте одинаковые настройки содержимого.

Нативные проверки этой статьи охватывают пиксели и размеры root Viewport/CanvasItems, ContentScaleFactor и логические области Keep/Expand на Windows Forward+/Vulkan. Качество целочисленного масштабирования в движении, DPI ОС, встраивание, безопасные области мобильных экранов и вся матрица экспортированных устройств требуют отдельных проверок и здесь не объявлены подтверждёнными.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.