Почему по бокам экрана двоиться изображение?

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Почему по бокам экрана двоиться изображение?

Сообщение korvin793 12 мар 2019, 21:04

Здравствуйте. Столкнулся с такой проблемой. Создал игру на Unity для Android. Соотношение сторон 16 на 9 использовал. Для других соотношений есть скрипт, который ставит черные полосы. Так вот из тех устройств на которых я тестировал данную игру на xiaomi redmi 5 и xiaomi mi a 2 lite. Выходит вот такая фигня
Изображение

Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

[RequireComponent(typeof(Camera))]
public class Cam : MonoBehaviour
{

    // Set this to your target aspect ratio, eg. (16, 9) or (4, 3).
    public Vector2 targetAspect = new Vector2(16, 9);
    Camera _camera;
   
    private CanvasScaler lev;
    public static int rat;
    void Start()
    {
       
        _camera = GetComponent<Camera>();
       
        lev = GameObject.FindGameObjectWithTag("lev").GetComponent<CanvasScaler>();
       
       
        UpdateCrop();
    }

   
    public void UpdateCrop()
    {
        float screenRatio = Screen.width / (float)Screen.height;
        float targetRatio = targetAspect.x / targetAspect.y;

        if (Mathf.Approximately(screenRatio, targetRatio))
        {
            lev.matchWidthOrHeight = 1f;
            rat = 1;
            _camera.rect = new Rect(0, 0, 1, 1);
           
        }
        else if (screenRatio > targetRatio)
        {
            lev.matchWidthOrHeight = 1f;
            rat = 1;
            float normalizedWidth = targetRatio / screenRatio;
            float barThickness = (1f - normalizedWidth) / 2f;
            _camera.rect = new Rect(barThickness, 0, normalizedWidth, 1);
           
        }
        else
        {
            lev.matchWidthOrHeight = 0f;
            rat = 2;
            float normalizedHeight = screenRatio / targetRatio;
            float barThickness = (1f - normalizedHeight) / 2f;
            _camera.rect = new Rect(0, barThickness, 1, normalizedHeight);
           
        }
    }
}
 

Почему такое может быть?
На остальных устройствах, в том числе и в юнити с этими же разрешениями экрана все норм.
korvin793
UNец
 
Сообщения: 2
Зарегистрирован: 12 мар 2019, 20:50

Re: Почему по бокам экрана двоиться изображение?

Сообщение AngryCat 12 мар 2019, 22:41

korvin793 писал(а):Здравствуйте. Столкнулся с такой проблемой. Создал игру на Unity для Android. Соотношение сторон 16 на 9 использовал. Для других соотношений есть скрипт, который ставит черные полосы. Так вот из тех устройств на которых я тестировал данную игру на xiaomi redmi 5 и xiaomi mi a 2 lite. Выходит вот такая фигня
Изображение

Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

[RequireComponent(typeof(Camera))]
public class Cam : MonoBehaviour
{

    // Set this to your target aspect ratio, eg. (16, 9) or (4, 3).
    public Vector2 targetAspect = new Vector2(16, 9);
    Camera _camera;
   
    private CanvasScaler lev;
    public static int rat;
    void Start()
    {
       
        _camera = GetComponent<Camera>();
       
        lev = GameObject.FindGameObjectWithTag("lev").GetComponent<CanvasScaler>();
       
       
        UpdateCrop();
    }

   
    public void UpdateCrop()
    {
        float screenRatio = Screen.width / (float)Screen.height;
        float targetRatio = targetAspect.x / targetAspect.y;

        if (Mathf.Approximately(screenRatio, targetRatio))
        {
            lev.matchWidthOrHeight = 1f;
            rat = 1;
            _camera.rect = new Rect(0, 0, 1, 1);
           
        }
        else if (screenRatio > targetRatio)
        {
            lev.matchWidthOrHeight = 1f;
            rat = 1;
            float normalizedWidth = targetRatio / screenRatio;
            float barThickness = (1f - normalizedWidth) / 2f;
            _camera.rect = new Rect(barThickness, 0, normalizedWidth, 1);
           
        }
        else
        {
            lev.matchWidthOrHeight = 0f;
            rat = 2;
            float normalizedHeight = screenRatio / targetRatio;
            float barThickness = (1f - normalizedHeight) / 2f;
            _camera.rect = new Rect(0, barThickness, 1, normalizedHeight);
           
        }
    }
}
 

Почему такое может быть?
На остальных устройствах, в том числе и в юнити с этими же разрешениями экрана все норм.

https://m.habr.com/ru/post/248273/ почему бы вместо всяких скриптов не использовать якоря?
Здесь могла бы быть ваша реклама.
Аватара пользователя
AngryCat
Старожил
 
Сообщения: 716
Зарегистрирован: 20 июл 2018, 22:29
Skype: Дискорд - Флеш#4099

Re: Почему по бокам экрана двоиться изображение?

Сообщение korvin793 12 мар 2019, 22:49

Якоря не могу использовать, меняется траектория шара для прохождения, и значит меняется подсказка. Мне нужно именно соотношение 16 на 9
korvin793
UNец
 
Сообщения: 2
Зарегистрирован: 12 мар 2019, 20:50


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24