Могу ли я изменить ширину холста World Space в соответствии с экраном? - PullRequest
0 голосов
/ 24 января 2020

У меня есть проекционная игра Unity2D orthographi c, выложенная на холсте World Space. Когда я изменяю аспект rat ios, элементы пользовательского интерфейса обрезаются по краям экрана. Я понимаю, что мог бы Screen Space решить эту проблему, но это вызывает другие проблемы. Мне нужно, чтобы этот холст был в Мировом пространстве.

Прикрепленное изображение показывает макет в формате 18: 9 в окне сцены. Я изменил аспект на 4: 3 в окне игры, а затем вернулся к окну сцены. Вы можете увидеть, как холст будет обрезан до 4: 3. Если я изменяю ширину холста в соответствии с форматом экрана, все в порядке, но мне нужно сделать это в скрипте, чтобы соответствовать формату устройства, а не только через Инспектор.

Похоже, я могу изменить размер холста чтобы соответствовать экрану 4: 3, и все хорошо, но как мне сделать это в коде?

enter image description here

Ответы [ 2 ]

1 голос
/ 25 января 2020

В Awake установите ширину холста на основе соотношения сторон камеры:

void Awake()
{
    RectTransform rt = GetComponent<RectTransform>();
    float canvasHeight = rt.rect.height;
    float desiredCanvasWidth = canvasHeight * Camera.main.aspect;
    rt.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, desiredCanvasWidth);
}
1 голос
/ 24 января 2020

Компонент Canvas Scaler отвечает за настройку вашего пользовательского интерфейса в соответствии с правильным соотношением сторон. Поскольку вы используете World Space, средство масштабирования холста не применяет настройки соотношения сторон.

Вы можете изменить размеры холста в соответствии с разрешением экрана в Awake (). Если ваши якоря установлены правильно, это может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...