Проблем с играта Unity за Android с таблети

Работя върху 2D игра за android в unity (портретен изглед). Използвам следния код, за да мащабирам сцената си в играта, за да пасне на всички екрани и той работи с всички мобилни телефони

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;
    }

}

Но когато тествах моята игра на таблет, тя пасна перфектно на височина, но в случай на ширина, ширината на изгледа на играта беше по-къса от ширината на екрана на таблета. От двете страни на таблетите се виждаше черна област.

Забележка: според горния код изгледът на играта се мащабира до размер 480X854.

Благодаря ви за проявения интерес към запитването ми!!!


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


Отговори (1)


Това е точно това, което вашият код казва, че прави. Вижте коментара „добавяне на pillarbox“. Този скрипт гарантира, че винаги виждате съотношение 9:16, като добавя празно пространство, където устройството не е 9:16.

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

Ако не искате ефекта на буквена кутия и пиларбокс, тогава не използвайте този скрипт!

Проектирайте своя потребителски интерфейс на играта, така че да не зависи от едно съотношение на страните. Unity UI има вградена поддръжка за това. Вижте CanvasScaler и гъвкавия опции за оформление, предоставени от RectTransform например.

person Huacanacha    schedule 30.03.2015