Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Размер экрана WEBgl и unity

Алексеевич Ученик (150), открыт 1 неделю назад
Всех приветствую, я делаю игру для Яндекс игр, в самом Unity все хорошо отображается но когда она забилдилась и я ее пытаюсь протестить в браузере то расширение экрана становиться таким, если открыть полныйэкран в бразере то все нормально. Подскажите кто сталкивался или знает
1 ответ
N N Мастер (1675) 1 неделю назад
Проблема с масштабированием может быть связана с настройками разрешения в Player Settings Unity для WebGL. Убедись, что задано правильное соотношение сторон и разрешение экрана. Также проверь стиль контейнера в HTML, убедившись, что контейнер игры имеет width: 100% и height: 100%. Это позволит игре адаптироваться под размер окна браузера, предотвращая расширение экрана в неигровом режиме.
АлексеевичУченик (150) 1 неделю назад
В PlayerSettings все вроде нормально настраивал под яндекс игры и WEBgl. В Index html и style вроде нормально(в них не разбираюсь)

N NМастер (1675) 1 неделю назад
Проверка разрешения WebGL: В настройках WebGL в Player Settings (первый скриншот) проверь, чтобы было установлено правильное разрешение канваса (в твоём случае оно выставлено на 1920x1080). Если игра должна подстраиваться под размер окна браузера, можно попробовать установить Canvas Width и Height на Auto, чтобы Unity автоматически подстраивала разрешение.

Настройки CSS для HTML и канваса: На скриншотах CSS-кода видно, что используется height: 100% и width: 100% для html, body, и контейнера канваса (#unity-container и #unity-canvas). Это должно растянуть канвас на весь экран, но иногда могут быть проблемы с адаптацией размеров, особенно в различных браузерах.
N NМастер (1675) 1 неделю назад
Отключение масштабирования страницы: В HTML-коде (в теге <meta>) можно попробовать добавить:

html
Копировать код
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
Это может помочь избежать ненужного масштабирования или изменения размера страницы при загрузке.

Проверка значений CSS для overflow: На втором скриншоте в CSS указано overflow: hidden;. Это может помочь избежать прокрутки, но также может создавать проблемы с масштабированием на некоторых устройствах и разрешениях экрана. Попробуй временно отключить overflow: hidden; и посмотри, изменится ли поведение.
N NМастер (1675) 1 неделю назад
Проверка параметра "Resolution Scaling" в настройках WebGL (Player Settings > Resolution and Presentation): Убедись, что флаг "Resolution Scaling" отключен или установлен на фиксированное значение, если ты не хочешь, чтобы игра меняла разрешение в зависимости от устройства.

Canvas Resizing: Убедись, что в коде самой игры используется CanvasScaler (если это UI), настроенный на "Scale with Screen Size", и установлены базовые параметры для разрешения (например, 1920x1080).

Если эти советы не решат проблему, можно попробовать запустить игру в другом браузере, чтобы проверить, возможно ли это специфическая проблема конкретного браузера или настроек Яндекс Игр. Также может помочь консоль разработчика в браузере для отслеживания ошибок, связанных с CSS или JavaScript.
Алексеевич Ученик (150) N N, попробовал в другом браузере, тоже самое Вставил код в meta, canvas настроен нормально Убрал overflow Не помогло
N NМастер (1675) 1 неделю назад
2. Настройка Resize Observer в JavaScript:
Поскольку CSS может не всегда корректно обновлять размеры канваса при изменении размеров окна браузера, попробуй добавить код на JavaScript для отслеживания изменения размеров окна и автоматической подстройки канваса.

В index.html добавь следующий скрипт в блок <script>:

javascript
Копировать код
window.addEventListener('resize', resizeCanvas);

function resizeCanvas() {
const canvas = document.getElementById('unity-canvas');
canvas.style .width = window.innerWidth + 'px';
canvas.style .height = window.innerHeight + 'px';
}

// Вызов функции сразу после загрузки страницы
resizeCanvas();
N N Мастер (1675) N N, Этот код будет автоматически изменять размеры канваса при изменении размеров окна браузера, что может помочь корректно адаптировать игру под окно браузера.
N NМастер (1675) 1 неделю назад
Использование devicePixelRatio:
В некоторых случаях проблема связана с различными значениями плотности пикселей (особенно на устройствах с высокой плотностью пикселей, как Retina-дисплеи). Попробуй настроить канвас с учётом этого коэффициента:

javascript
Копировать код
function adjustCanvasForPixelRatio() {
const canvas = document.getElementById('unity-canvas');
const pixelRatio = window.devicePixelRatio || 1;
canvas.width = window.innerWidth * pixelRatio;
canvas.height = window.innerHeight * pixelRatio;
canvas.style .width = window.innerWidth + 'px';
canvas.style .height = window.innerHeight + 'px';
}

window.addEventListener('resize', adjustCanvasForPixelRatio);
adjustCanvasForPixelRatio();
N N Мастер (1675) N N, Этот код устанавливает физический размер канваса в зависимости от плотности пикселей устройства.
N NМастер (1675) 1 неделю назад
Проверка установок WebGL Template:
В Unity можно использовать шаблоны для WebGL. На первом скриншоте видно, что у тебя установлен шаблон Default. Попробуй переключиться на шаблон Minimal или Custom и внеси нужные изменения вручную.

Minimal template может работать лучше, так как он меньше перегружен стилями.
Если используешь кастомный шаблон, можешь скопировать index.html из стандартного шаблона и удалить избыточные стили и скрипты, чтобы оставить только основные параметры для отображения канваса.
N N Мастер (1675) N N, Настройки Viewport в Unity: В Unity можно использовать специальные параметры Viewport для управления размерами канваса. Попробуй задать конкретные значения, которые могут помочь удерживать разрешение. Например, в Player Settings > Resolution and Presentation попробуй задать масштабирование (если оно включено) или протестировать с разными разрешениями (например, 1280x720) и проверить результат.
N NМастер (1675) 1 неделю назад
Дополнительный JavaScript для поддержки адаптивности:
Если указанные шаги не помогают, можно использовать более сложные настройки адаптивного JavaScript для динамического управления канвасом. Например:

javascript
Копировать код
function setupResponsiveCanvas() {
const canvasContainer = document.getElementById('unity-container');
const canvas = document.getElementById('unity-canvas');

function resize() {
let width = window.innerWidth;
let height = window.innerHeight;

canvasContainer.style .width = `${width}px`;
canvasContainer.style .height = `${height}px`;

canvas.width = width;
canvas.height = height;
}

window.addEventListener('resize', resize);
resize();
}

setupResponsiveCanvas();
N N Мастер (1675) N N, Этот код подстраивает размеры канваса и его контейнера при каждом изменении окна. Попробуй каждый из этих подходов по отдельности, чтобы увидеть, какой из них решает проблему. Если это не помогает, возможно, нужно искать решение в настройках Яндекс Игр или в особенностях работы WebGL на конкретной платформе, связавшись с поддержкой или сообществом разработчиков на платформе Яндекс Игр.
АлексеевичУченик (150) 1 неделю назад
Upd: в Style css
Похожие вопросы