Итак, я впервые портирую игру на Android в Unity3D. И я столкнулся с несколькими проблемами по пути. Моя текущая проблема в том, что разрешение кажется неправильным, оно обрезает края экрана, и мои остановки прокрутки для прокрутки экрана влево / вправо больше не находятся в нужном месте.
После небольшого исследования многие люди говорят, что вам нужно сделать свою игру независимой от разрешения, чтобы она могла работать на всех устройствах Android / Iphone / Ipad. Это правда? Если да, то как мне это сделать? Если нет, то как я могу помочь исправить разрешение, чтобы при переносе на мобильные устройства оно выглядело правильно?
РЕДАКТИРОВАТЬ: я до сих пор не имею то, что мне нужно, разрешения по-прежнему не работают должным образом, даже с кодом и приемами, перечисленными ниже. Мне нужно каким-то образом настроить разрешение в зависимости от устройства. По какой-то причине, когда я пытаюсь получить разрешение устройства, используя код Мунгоида, он возвращает 0x0
источник
Ответы:
Проблема, с которой вы столкнетесь в Android, заключается в том, что у каждого устройства есть свой размер экрана, разрешение и плотность пикселей. Если вы хотите, чтобы ваша игра выглядела одинаково на всех устройствах, вам предстоит много работы и, вероятно, вы никогда не будете довольны результатами. Либо игра будет выглядеть растянутой на широкоэкранных дисплеях или сжатой на не широкоформатных. Я предлагаю вам решить, что действительно важно, и позволить чему-то еще немного скользить.
Без каких-либо скриншотов или знаний о том, что представляет собой ваша игра и как она выглядит, мы все можем строить предположения о решениях, но у нас нет конкретного направления, чтобы дать вам конкретный совет.
В Unity вы можете получить доступ к размерам текущего экрана с помощью класса Screen :
Screen.width
иScreen.height
(среди других свойств). Затем вы можете изменить соотношение сторон камеры, чтобы изменить то, что видно на экранах разных размеров, исходя из размеров экрана и ваших личных ожиданий того, что должно быть видно.Если вам необходимо обеспечить правильное масштабирование дисплеев HUD, вы можете сделать это, изменив матрицу преобразования графического интерфейса на основе размеров экрана в каждой
OnGUI()
функции. Я делал это раньше, создавая этот простой скрипт и прикрепляя его ко всему, что отображало элементы графического интерфейса, которые я хотел масштабировать:Затем в реальных
OnGUI()
функциях я сразу установил матрицу преобразования:источник
Screen.width
и.height
в сочетании сCamera.fieldOfView
иCamera.aspect
для воспроизведения того же представления на экранах произвольного размера. Это просто потребовало бы некоторого трига, чтобы определиться, как это сделать.Вы можете попробовать что-то вроде следующего и применить его. Я предполагаю, что мобильное устройство должно возвращать только одно разрешение.
Также посмотрите здесь для получения дополнительной информации об Экране в единстве http://unity3d.com/support/documentation/ScriptReference/Screen.html
источник