Проблема с Android-игрой Unity на планшетах

Я работаю над 2D-игрой для Android в единстве (портретный вид). Я использую следующий код, чтобы масштабировать свою игровую сцену, чтобы она подходила для всех экранов, и он работал со всеми мобильными телефонами

void Start()
{
    float targetaspect = 9.0f / 16.0f;

    // determine the game window's current aspect ratio
    float windowaspect = (float)Screen.width / (float)Screen.height;

    // current viewport height should be scaled by this amount
    float scaleheight = windowaspect / targetaspect;

    // obtain camera component so we can modify its viewport
    Camera camera = GetComponent<Camera>();

    // if scaled height is less than current height, add letterbox
    if (scaleheight < 1.0f)
    {
        Rect rect = camera.rect;

        rect.width = 1.0f;
        rect.height = scaleheight;
        rect.x = 0;
        rect.y = (1.0f - scaleheight) / 2.0f;

        camera.rect = rect;
    }
    else // add pillarbox
    {
        float scalewidth = 1.0f / scaleheight;

        Rect rect = camera.rect;

        rect.width = scalewidth;
        rect.height = 1.0f;
        rect.x = (1.0f - scalewidth) / 2.0f;
        rect.y = 0;

        camera.rect = rect;
    }

}

Но когда я тестировал свою игру на планшете, она идеально подходила по высоте, но в случае ширины ширина просмотра игры была меньше, чем ширина экрана планшета. На обеих сторонах таблеток были видны черные области.

Примечание: в соответствии с приведенным выше кодом вид игры масштабируется до размера 480 x 854.

Спасибо за проявленный интерес к моему запросу!!!


person kishorB    schedule 30.03.2015    source источник


Ответы (1)


Это именно то, что говорит ваш код. См. комментарий «добавить столб». Этот сценарий гарантирует, что вы всегда будете видеть соотношение сторон 9:16, добавляя пустое пространство там, где устройство не имеет соотношения сторон 9:16.

Вы, вероятно, не видели проблемы на телефонах, потому что многие смартфоны используют соотношение сторон 16:9 (портретное соотношение 9:16), которое точно соответствует базовому соотношению сторон в этом скрипте. Многие столы имеют более квадратную форму (4:3 для iPad), поэтому на планшетах чаще отображается бокс. Устройства с соотношением сторон более 16:9 будут отображаться в виде почтового ящика.

Если вам не нужен эффект почтового ящика и пиларбокса, не используйте этот скрипт!

Создайте свой игровой интерфейс так, чтобы он не зависел от одного соотношения сторон. Пользовательский интерфейс Unity имеет встроенную поддержку для этого. См. CanvasScaler и гибкий параметры макета предоставлены RectTransform например.

person Huacanacha    schedule 30.03.2015