Проблема, с которой вы столкнетесь в Android, заключается в том, что у каждого устройства есть свой размер экрана, разрешение и плотность пикселей. Если вы хотите, чтобы ваша игра выглядела одинаково на всех устройствах, вам предстоит много работы и, вероятно, вы никогда не будете довольны результатами. Либо игра будет выглядеть растянутой на широкоэкранных дисплеях или сжатой на не широкоформатных. Я предлагаю вам решить, что действительно важно, и позволить чему-то еще немного скользить.
Без каких-либо скриншотов или знаний о том, что представляет собой ваша игра и как она выглядит, мы все можем строить предположения о решениях, но у нас нет конкретного направления, чтобы дать вам конкретный совет.
В Unity вы можете получить доступ к размерам текущего экрана с помощью класса Screen : Screen.width
и Screen.height
(среди других свойств). Затем вы можете изменить соотношение сторон камеры, чтобы изменить то, что видно на экранах разных размеров, исходя из размеров экрана и ваших личных ожиданий того, что должно быть видно.
Если вам необходимо обеспечить правильное масштабирование дисплеев HUD, вы можете сделать это, изменив матрицу преобразования графического интерфейса на основе размеров экрана в каждой OnGUI()
функции. Я делал это раньше, создавая этот простой скрипт и прикрепляя его ко всему, что отображало элементы графического интерфейса, которые я хотел масштабировать:
//GUI values in code are assigned based on an 800x600 screen
private var nativeWidth : float = 800.0f;
private var nativeHeight : float = 600.0f;
private var guiMatrix : Matrix4x4;
function Start ()
{
var scale : Vector3 = Vector3(Screen.width / nativeWidth,
Screen.height / nativeHeight,
1.0f);
guiMatrix = Matrix4x4.TRS(Vector3.zero, Quaternion.identity, scale);
}
function GetGUIMatrix() : Matrix4x4
{
return guiMatrix;
}
Затем в реальных OnGUI()
функциях я сразу установил матрицу преобразования:
function OnGUI()
{
GUI.matrix = guiScale.GetGUIMatrix();
/* Everything Else */
}