Intereting Posts
Как избежать вызова обоих: onItemClicked и onTextChanged в AutoCompleteTextView Как я могу запустить Onclick событие программно в android? Android – startActivityForResult сразу же запускает onActivityResult Как программно закрыть Android Soft KeyBoard? ОШИБКА: java.lang.NoClassDefFoundError: android.support.v4.content.LocalBroadcastManager Ошибка. Редактирование инструментов сборки SDK (23.0.3) слишком мало для проекта «Приложение». Минимальное значение – 25.0.0 Java.lang.RuntimeException: WakeLock не заблокирован C2DM_LIB Как разделить нерегулярный многоугольник на равные места на карте Google V2 Как добавить несколько кнопок на одном AlertDialog Android – обновить контакт Android: открыть pdf-файл из моего приложения, используя встроенный просмотрщик PDF-файлов Аппаратная отладка с использованием Samsung Galaxy S3 в Windows Получить номер телефона входящего вызова в Android Как программно прокручивать ScrollView до нижнего уровня Как я могу проверить из Android WebView, если страница «404 страница не найдена»?

Как работать с различными разрешениями экрана

Я использую Unity 4.3.3 для своей игры. Я делаю игру для устройств Android и iOS. Поскольку я довольно новичок в единстве, я не могу найти способ работать с различным разрешением экрана. Я использую c # для своих скриптов.

Я хочу, чтобы моя игра запускалась в полноэкранном режиме. Я тестировал его на iPad 2, и он работает идеально, но для iPhone 4 стороны обрезаны, а для iPhone 5 они обрезаются еще больше. Каково решение? Какой вариант выбрать в настройках проигрывателя> iOS> OtherSettings> Target Resolution?

Solutions Collecting From Web of "Как работать с различными разрешениями экрана"

Единство изменяет свою встроенную камеру в соответствии с размерами соотношения сторон используемого экрана. Очевидно, это не всегда желательно, поэтому есть несколько способов обойти это:

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

Camera.aspect = 4f/3f; 

Просто имейте в виду, что это исказит игру по разным пропорциям.

2) Другой метод немного сложнее, но результат выглядит намного лучше. Если вы используете орфографическую камеру, важно помнить, что независимо от того, какое разрешение экрана используется, орфографическая камера поддерживает высоту с заданным значением и только изменяет ширину. Например, с орфографической камерой размером 10, высота будет установлена ​​равной 2. Учитывая это, вам нужно будет компенсировать максимально возможную камеру на каждом уровне (например, иметь более широкий фон ) Или динамически изменить размер орфографии камеры до тех пор, пока его ширина не будет соответствовать тому, что вы создали.

Компоненты GUI проще реализовать, просто устанавливая их положение, чтобы они зависели от разрешения экрана везде, где это необходимо. Например, если вы хотите, чтобы в верхнем правом углу появлялась кнопка, вы просто устанавливали ее положение на что-то вроде position = new Vector2(Screen.width - 50, 50);

EDIT: Поскольку вы упомянули устройства, которые вы использовали, я немного искал, какое соотношение сторон использует каждый: Ipad2 = 4: 3, Iphone4 = 3: 2 и Iphone5 = 16: 9

Поскольку вы сказали, что он отлично смотрится на Ipad2, я предполагаю, что вы разработали свою игру, чтобы использовать соотношение сторон 4: 3, поэтому вы называете «отсечение» именно тем, что ваша орфографическая камера расширилась. Решение состоит в том, чтобы использовать один из двух методов, описанных выше.

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

Вы можете попытаться выполнить захват разрешения устройства с помощью Camera.ScreenWidth и Camera.ScreenHeight.

Затем выполните некоторую математику, чтобы вычислить разницу с имеющейся у вас разрешением и применить ее к родительскому объекту.

Это позволит масштабировать все большее / меньшее, чтобы оно соответствовало разрешению устройства без разрешения нескольких изображений и т. Д. Для разных устройств разрешения.

Если ваша цель – получить предыдущую ширину:

 [RequireComponent(typeof(Camera))] public class ResizeCamera : MonoBehaviour { private float DesignOrthographicSize; private float DesignAspect; private float DesignWidth; public float DesignAspectHeight; public float DesignAspectWidth; public void Awake() { this.DesignOrthographicSize = this.camera.orthographicSize; this.DesignAspect = this.DesignAspectHeight / this.DesignAspectWidth; this.DesignWidth = this.DesignOrthographicSize * this.DesignAspect; this.Resize(); } public void Resize() { float wantedSize = this.DesignWidth / this.camera.aspect; this.camera.orthographicSize = Mathf.Max(wantedSize, this.DesignOrthographicSize); } } 

Вам необходимо изменить окно просмотра камеры в соответствии с соотношением сторон устройства. Предположим, вы сделали игру для 720×1080

Затем в сценарии вы должны сделать

 float xFactor = Screen.width / 720f; float yFactor = Screen.height / 1080f; Camera.main.rect = new Rect(0,0,1,xFactor/yFactor); 

Или

Другой способ: если вы делаете игру с соотношением сторон 9:16, тогда

Сделайте это в своем сценарии,

 public float targetRatio = 9f/16f; //The aspect ratio of your game void Start() { Camera cam = GetComponent<Camera>(); cam.aspect = targetRatio; } 

Самый простой способ, которым я решил это, был, как указал Стивен, заставлять мое перспективное соотношение сторон камеры к тому, для которого я разрабатываю. Конечно, это деформирует некоторые объекты, если аспектный рацион, который я разработал, отличается от одного из устройств. Для объектов пользовательского интерфейса, если вы используете встроенный модуль, я создаю прямоугольники на основе процента от размера экрана

 Rect(0.5 * Screen.width, 0.5 * Screen.height, 0.25 * Screen.width, 0.25 * Screen.height) 

Это поместит верхний левый угол в центр экрана и создаст прямоугольник 1/4 высоты и 1/4 ширины экрана. Я использую NGUI 2.7 для пользовательского интерфейса, и до сих пор я не видел никаких проблем с различными пропорциями, и что один использует орфографическую камеру для отображения пользовательского интерфейса

Я знаю, что это старая нить, но люди все равно могут найти ответ.

Чтобы настроить перспективную камеру на разные пропорции экрана с различным поведением, чем по умолчанию Unity, вам нужна тригонометрия. Вся необходимая информация об этом находится здесь: https://en.wikipedia.org/wiki/Angle_of_view

Если вам нужен простой выход, вот решение, которое работает со всеми типами камер: http://u3d.as/oUX

Если вы разрабатываете 2d-игру, ваша камера находится в орфографическом представлении, тогда просто выполните следующий код и прикрепите его к вашему игровому объекту. Он будет масштабировать игровой объект (в данном случае спрайт) с разрешением экрана.

 void Resize() { SpriteRenderer sr=GetComponent<SpriteRenderer>(); if(sr==null) return; transform.localScale=new Vector3(1,1,1); float width=sr.sprite.bounds.size.x; float height=sr.sprite.bounds.size.y; float worldScreenHeight=Camera.main.orthographicSize*2f; float worldScreenWidth=worldScreenHeight/Screen.height*Screen.width; Vector3 xWidth = transform.localScale; xWidth.x=worldScreenWidth / width; transform.localScale=xWidth; Vector3 yHeight = transform.localScale; yHeight.y=worldScreenHeight / height; transform.localScale=yHeight; } 

В этом магазине есть бесплатный актив в Asset-store … Просто проверьте …

http://u3d.as/content/palash-bhowmick/fit-all-screen-size/9q9

Если форма вашего объекта изменена, то удалите строки, которые начинаются с: –

transform.localScale.x =

Это очень просто для Unity Now, поскольку Unity3D имеет собственную систему пользовательского интерфейса. Для 3D Unity Автоматическая настройка камеры с использованием размера экрана. Проблема возникает для UI на самом деле, и это немного сложно. Прежде всего, попытайтесь выяснить, какие элементы должны изменить положение и размер с размером экрана. Например, если у вас есть кнопка точно в центре экрана. Тогда ему не нужно менять позицию в соответствии с экраном. Он останется в центре.

Теперь давайте рассмотрим сценарий, в котором у вас есть кнопка в углу экрана, как мы видим кнопку паузы в верхнем правом или верхнем левом углу. Теперь вам нужно будет привязать свою кнопку в углу соответственно. Не имеет значения, на каком экране размер игры работает, кнопка паузы должна придерживаться угла.

Теперь давайте возьмем другой случай, в котором у вас есть фон в вашем меню. Теперь вам нужно применить растягивание для этого спрайта BG. Этот BG будет растягиваться и сокращаться соответственно, но все предметы на нем будут иметь размер исправления. Для этого рекомендуется, чтобы BGs были плоскими, чтобы один и тот же BG мог иметь хорошее качество для 16:10 или 4: 3 (все о пользовательском интерфейсе Unity)

Если вы еще раз поговорите об этом письме меня по адресу ch.mubasher.ikram@gmail.com