Поиск…


Видовые

Для поддержки нескольких разрешений и пропорций Libgdx использует так называемые Viewports .
Существует несколько типов Viewports которые используют разные стратегии для обработки нескольких разрешений и пропорций.
Viewport использует Camera под капотом и управляет ее viewportHeight и viewportWidth . Вы можете опционально предоставить Viewport a Camera в своем конструкторе, иначе он будет использовать OrthographicCamera по умолчанию:

private Viewport viewport;
private Camera camera;

public void create() {
   camera = new PerspectiveCamera();
   viewport = new FitViewport(8f, 4.8f, camera);
}  

Кроме того, вы должны указать worldWidth и worldHeight для конструктора viewport. Это пространство будет представлять собой виртуальную систему координат, которую вы будете использовать для указания позиции объекта и размеров. Например, преобразование видового экрана, которое может быть применено к SpriteBatch, автоматически позаботится о преобразовании логических координат в фактические координаты экрана таким образом, который соответствует фактическому типу видового экрана, который вы используете. Например, при использовании орфографической проекции (по умолчанию используется OrthographicCamera ): если ваш размер мира составляет 12,8 на 7,8 метра, а экран вашего устройства - 2560x1560 пикселей, тогда ваш мир будет динамически проецироваться с 200 пикселями на метр.

При изменении размера Viewport (например, если меняется ориентация экрана смартфона), вам необходимо сообщить об этом Viewport экране. он автоматически обновит Camera viewportHeight и viewportWidth :

public void resize(int width, int height) {
    viewport.update(width, height);
}

Viewport также управляет OpenGL Viewport и, при необходимости, изменяет область рисования.

Viewport s также заботится о преобразовании координаты экрана в координаты игры, что особенно важно для выбора:

private Vector2 worldPos = new Vector2();
public boolean touchDown (int x, int y, int pointer, int button) {
    worldPos.set(x, y);
    viewport.unproject(worldPos);
    processPicking(worldPos);
}

Встроенные видовые экраны

Есть несколько встроенных видовых экранов, каждый из которых делает разные вещи. Вот список имен и их описания:

Имя видового экрана Описание
StretchViewport Будет растягивать экран. Нет черных полос, но соотношение сторон может быть отключено.
FitViewport Будет максимальный размер, основанный на соотношении сторон. Могут быть черные полосы.
FillViewport Совсем так же, как FitVieport, но всегда заполняет весь экран.
ScreenViewport Всегда заполняет весь экран, но не изменяет размер всех детей.
ExtendedViewport Сохраняет соотношение сторон мира без черных полос, расширяя мир в одном направлении
CustomViewport Пользовательский запрограммированный Viewport. Может иметь черные полосы и может поддерживать соотношение сторон.

Пользовательские видовые экраны

Вы можете создать свой собственный пользовательский видовой экран. Он может иметь черные полосы, и он может или не может поддерживать соотношение сторон, в зависимости от того, как вы его программируете. Пользовательский видовой экран будет выглядеть примерно так:
public class Tutorial extends Viewport . Вам нужно будет переопределить update(width, height) , но это все.

Другая попытка - расширить общий ScalingViewport и предоставить другое масштабирование, которое еще не было предоставлено. Предположим, вы установили его в Scaling.none . Это будет выглядеть примерно так: Пример изображения Если вам нужна какая-то ссылка, вы можете найти встроенные классы видового экрана прямо здесь .

StretchViewport

StretchViewport - это тип Viewport , который поддерживает размер виртуального экрана.
Это позволяет определить фиксированную (независимую от разрешения) ширину и высоту.
StretchViewport , как следует из названия, растягивает виртуальный экран, если отношение виртуального изображения не соответствует реальному соотношению сторон. OpenGL Viewport не будет изменен, и черные полосы не появятся.

Использование:

private Viewport viewport;
private Camera camera;

public void create() {
    camera = new OrthographicCamera();
    viewport = new StretchViewport(80, 48, camera);
}

public void resize(int width, int height) {
    viewport.update(width, height);
}

FitViewport

FitViewports - это видовые экраны, которые всегда поддерживают соотношение сторон. Он делает это, создавая черные полосы на краях, где осталось пространство. Это один из наиболее часто используемых видовых экранов.

Использование:

private Viewport viewport;
private Camera camera;

public void create() {
    camera = new OrthographicCamera();
    viewport = new FitViewport(80, 48, camera);
}

public void resize(int width, int height) {
    viewport.update(width, height);
}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow