Как можно сохранять позицию и масштаб GUI-элементов в зависимости от разрешения экрана?

Простой пример реализации резинового GUI Menu на Unity3d C#, меню не зависящее от разрешения экрана, которое сохраняет свою позицию в любой ситуации
 
C#
//Настраеваем позицию кнопок ГУИ на одном разрешении, и записываем его в переменные,
//чтобы в последствии знать фактор при увеличении или уменьшении экара
public float originalWidth = 800.0f; // Оригинальный размер игрового экрана по ширине
public float originalHeight = 480.0f; // Оригинальный размер игрового экрана по высоте
Vector3 scale;
 
void Start()
{
        scale.x = Screen.width/originalWidth; // Получаем фактор соотношения по ширине
        scale.y = Screen.height/originalHeight; // Получаем фактор соотношения по высоте
        scale.z = 1; // Неиспользуется, но указать стоит
}
 
void OnGUI()
{
        GUI.matrix = Matrix4x4.TRS(Vector3.zero, Quaternion.identity, scale); //Set scale
        //Далее можем писать наш код
}
Комментарии