Как получить разрешение экрана unity

Обновлено: 07.07.2024

Приветствую всех друзья! В прошлой статье я рассказал о настройках физики для 2D проектов в окне настроек проекта. Сегодня я продолжу цикл статей о настройках проекта, и на очереди у нас вкладка настройки общих параметров игры.

Картинка для привлечения внимания из открытых источников Картинка для привлечения внимания из открытых источников

Используйте Player Settings , которые находятся по пути Edit/Project Settings , чтобы установить различные параметры для билда игры который соберет Unity.

Существует несколько общих параметров, которые одинаковы независимо от платформы, на которую идет сборка билда.

Однако большинство настроек зависят от конкретной платформы и делятся на следующие разделы:

  • Icon: значок(и) игры, отображаемые на рабочем столе. Вы можете выбрать значки из ресурсов 2D-изображений в проекте, таких как спрайты или импортированные изображения.
  • Resolution and Presentation: настройки для разрешения экрана и других деталей презентации, как то, должна ли игра по умолчанию работать в полноэкранном режиме.
  • SplashImage: изображение, показанное во время запуска игры. Этот раздел также содержит общие настройки для создания экрана-заставки, о которых я расскажу в следующей статье.
  • OtherSettings: любые оставшиеся настройки, характерные для данной платформы.
  • PublishingSettings: подробные сведения о том, как как подготовить приложение к доставке из магазина приложений или веб-страницы хоста. Актуальны только для мобильных и веб платформ.
  • XRSettings: настройки, характерные для приложений виртуальной реальности, дополненной реальности и смешанной реальности.

О специфичных настройках, которые распространяются на отдельно взятую платформу я буду рассказывать в отдельных статьях (кстати если вам эта тема интересна напишите в комментарии о какой платформе хотелось бы услышать подробнее, и тогда я сделаю статью по ней). Важно понимать, что не все разделы из вышеперечисленных поддерживаются на каждой платформе.

Общие параметры.

  • CompanyName – введите имя своей компании. Оно используется для поиска файла настроек.
  • ProductName – введите имя, которое появляется в строке меню, когда вы запускаете игру. Unity также использует это имя для поиска файла настроек.
  • Version – введите номер версии вашего приложения.
  • DefaultIcon – выберите файл текстуры ( Texture2D ), который вы хотите использовать в качестве иконки по умолчанию для игры на каждой платформе. Вы можете переопределить иконку для определенных платформ.
  • DefaultCursor – выберите файл текстуры ( Texture2D ), который вы хотите использовать в качестве курсора по умолчанию для приложения на каждой поддерживаемой платформе.
  • CursorHotspot – установите значение смещения (в пикселях) от верхнего левого края курсора по умолчанию к местоположению точки доступа курсора. Точка доступа курсора – это точка в изображении курсора, которую Unity использует для запуска событий на основе положения курсора.

На сегодня это все. Следующая статья будет посвящена вкладке Player , а именно настройкам экрана загрузки в окне настроек проекта в Unity. Спасибо всем, кто дочитал эту статью до конца, подписывайтесь на канал, ставьте лайки, а для тех, у кого появились вопросы - спрашивайте в комментариях! А если вы хотите помочь данному каналу в развитии – делитесь этой статьей с друзьями в социальных сетях!

Левш@ 29 июл 2011, 13:42

Вопрос на засыпку как из скрипта получить текущее разрешение рабочего стола windows ? И возможно ли вообще?
Заранее спасибо всем ответившим, а то вот копал, копал и ничего не нарыл по теме. Последний раз редактировалось Левш@ 30 июл 2011, 16:50, всего редактировалось 1 раз.

gnoblin 29 июл 2011, 14:17

запустить игру в оконном режиме,
запомнить Screen.currentResolution,
если надо - переключиться в фулскрин.

Левш@ 29 июл 2011, 14:58

gnoblin спасибо, но мне нужно не запоминать, а работать с *этим* в реалтайме ( в Update () ) и в динамике./
Мне нужно разрешение не окна в редакторе, а именно рабочего стола винды (реальное, текущее, полное разрешение экрана).

DbIMok 29 июл 2011, 15:52

Левш@ писал(а): Мне нужно разрешение не окна в редакторе, а именно рабочего стола винды Screen.currentResolution
If the player is running in window mode, this returns the current resolution of the desktop.

Левш@ 29 июл 2011, 16:27

А, сорри народ, я тут паралельно в отладке сижу, не сразу понял. Всем спасибо .
Вроде то что надо! Последний раз редактировалось Левш@ 29 июл 2011, 16:49, всего редактировалось 2 раз(а).

waruiyume 29 июл 2011, 16:28

Amper писал(а): System.Windows.Forms.Screen.PrimaryScreen.Bounds.Size.Height The type or namespace name `Windows' does not exist in the namespace `System'. Are you missing an assembly reference?

DbIMok 29 июл 2011, 16:35

Левш@ 29 июл 2011, 16:50

Первый вопрос решен, все работает.

Zaicheg 29 июл 2011, 16:51

Amper писал(а): Ну еще бы он не ругался, системные либы тоне подключили:
using System.Windows.Forms;

Ошибка на этой строке:
Код: Выделить всё The type or namespace name `Windows' does not exist in the namespace `System'. Are you missing an assembly reference?

Левш@ писал(а): Еще вопрос, можно ли и как изменять разрешение картинки билда в реалтайме ?[/color]

Левш@ 29 июл 2011, 17:00

Screen. SetResolution . width = currWidth ;
Screen. SetResolution . height = currHeight ;

MissingFieldException: Field 'CompilerGenerated.__GuiTextureCoord_ScreenCorector$callable0$49_16__.width' not found.

Итак, я впервые портирую игру на Android в Unity3D. И я столкнулся с несколькими проблемами по пути. Моя текущая проблема в том, что разрешение кажется неправильным, оно обрезает края экрана, и мои остановки прокрутки для прокрутки экрана влево / вправо больше не находятся в нужном месте.

РЕДАКТИРОВАТЬ: я до сих пор не имею то, что мне нужно, разрешения по-прежнему не работают должным образом, даже с кодом и приемами, перечисленными ниже. Мне нужно каким-то образом настроить разрешение в зависимости от устройства. По какой-то причине, когда я пытаюсь получить разрешение устройства, используя код Мунгоида, он возвращает 0x0

Вам нужно будет пройти через любой фрагмент кода, который предполагает определенное разрешение экрана, и изменить его, чтобы он мог брать текущее разрешение экрана и что-то с ним делать. В зависимости от того, что вы делаете и как, не существует универсального решения. Не могли бы вы более конкретно рассказать о своей проблеме? Вы говорите, что разрешение «кажется неправильным» и «все еще выключено», но разрешение экрана обычно является фиксированным свойством устройства. Так что это не разрешение, а неправильный способ рендеринга на экран. Если вы сделаете предположение о том, насколько широким и высоким является экран, у вас всегда будут проблемы на разных устройствах и форматах изображения. Полагаю, на самом деле я пытаюсь написать код, чтобы найти самое низкое разрешение, установить для него игру и соответствующим образом масштабировать все объекты. Я знаю, как установить масштаб игрового поля, но я не могу получить разрешение устройства. поэтому игра "слишком сильно увеличена", или все слишком велико.

Проблема, с которой вы столкнетесь в Android, заключается в том, что у каждого устройства есть свой размер экрана, разрешение и плотность пикселей. Если вы хотите, чтобы ваша игра выглядела одинаково на всех устройствах, вам предстоит много работы и, вероятно, вы никогда не будете довольны результатами. Либо игра будет выглядеть растянутой на широкоэкранных дисплеях или сжатой на не широкоформатных. Я предлагаю вам решить, что действительно важно, и позволить чему-то еще немного скользить.

Без каких-либо скриншотов или знаний о том, что представляет собой ваша игра и как она выглядит, мы все можем строить предположения о решениях, но у нас нет конкретного направления, чтобы дать вам конкретный совет.

В Unity вы можете получить доступ к размерам текущего экрана с помощью класса Screen : Screen.width и Screen.height (среди других свойств). Затем вы можете изменить соотношение сторон камеры, чтобы изменить то, что видно на экранах разных размеров, исходя из размеров экрана и ваших личных ожиданий того, что должно быть видно.

Если вам необходимо обеспечить правильное масштабирование дисплеев HUD, вы можете сделать это, изменив матрицу преобразования графического интерфейса на основе размеров экрана в каждой OnGUI() функции. Я делал это раньше, создавая этот простой скрипт и прикрепляя его ко всему, что отображало элементы графического интерфейса, которые я хотел масштабировать:

Затем в реальных OnGUI() функциях я сразу установил матрицу преобразования:

Установка соотношения сторон камеры на основе ширины и высоты экрана не помогает, когда телефон в вертикальном положении, он вообще не отображается, а в горизонтальном положении он выглядит точно так же, как и раньше. Игра разделена на три части, вы плавно прокручиваете пальцем между разделами (как в Angry Birds), вот изображение того, как должна выглядеть левая сторона. И середина . Вот левая сторона, когда мой телефон держится вертикально , И вот горизонтально . Надеюсь, эти картинки помогут, я впервые портирую с Unity на Android или даже создаю игру для Android. Я немного потерян. Судя по (моей интерпретации) вашим объяснениям и вашим фотографиям, проблема не в разрешении; Ваша камера находится не в том месте, которое может показывать все, что вы хотите на маленьком экране. Уменьшите свои уровни или переместите камеру назад, чтобы показать больше или что-то еще. Я бы посоветовал установить в вашем игровом окне намного меньший размер, чтобы он соответствовал реальному устройству, а не 1230х530, которые у вас есть, чтобы вы могли почувствовать, что вы увидите, когда перевернете его. Проблема в том, что я уже достаточно сильно уменьшил камеру. Если эта проблема будет сохраняться, как я могу точно учесть различные экраны и размеры и изменить их? @TimothyWilliams, вы, вероятно, могли бы что-то решить, выбрав минимальное разрешение (800x600 или около того), с которым работает ваша игра. Затем используйте Screen.width и .height в сочетании с Camera.fieldOfView и Camera.aspect для воспроизведения того же представления на экранах произвольного размера. Это просто потребовало бы некоторого трига, чтобы определиться, как это сделать.

Вы можете попробовать что-то вроде следующего и применить его. Я предполагаю, что мобильное устройство должно возвращать только одно разрешение.

Читайте также: