Внимание! написано не под реалтайм, выравнивание происходит только 1 раз при старте. (можете переделать, кому нужно).
Синтаксис:
Используется javascript
var posX = 0.0;
var posY = 0.0;
var shirina = 0.0;
var vysota = 0.0;
var scrinWidth = 0.0;
var scrinHeight = 0.0;
var scrinBalansWidth = 0.0;
var scrinBalansHeight = 0.0;
function Start () {
posX = guiTexture.pixelInset.x;
posY = guiTexture.pixelInset.y;
shirina = guiTexture.pixelInset.width;
vysota = guiTexture.pixelInset.height;
scrinWidth = Screen.width;
scrinHeight = Screen.height;
scrinBalansWidth = 1452 / scrinWidth;
scrinBalansHeight = 910 / scrinHeight;
Balans ();
}
function Balans () {
guiTexture.pixelInset.x = posX / scrinBalansWidth;
guiTexture.pixelInset.y = posY / scrinBalansHeight;
guiTexture.pixelInset.width = shirina / scrinBalansWidth;
guiTexture.pixelInset.height = vysota / scrinBalansHeight;
}
var posY = 0.0;
var shirina = 0.0;
var vysota = 0.0;
var scrinWidth = 0.0;
var scrinHeight = 0.0;
var scrinBalansWidth = 0.0;
var scrinBalansHeight = 0.0;
function Start () {
posX = guiTexture.pixelInset.x;
posY = guiTexture.pixelInset.y;
shirina = guiTexture.pixelInset.width;
vysota = guiTexture.pixelInset.height;
scrinWidth = Screen.width;
scrinHeight = Screen.height;
scrinBalansWidth = 1452 / scrinWidth;
scrinBalansHeight = 910 / scrinHeight;
Balans ();
}
function Balans () {
guiTexture.pixelInset.x = posX / scrinBalansWidth;
guiTexture.pixelInset.y = posY / scrinBalansHeight;
guiTexture.pixelInset.width = shirina / scrinBalansWidth;
guiTexture.pixelInset.height = vysota / scrinBalansHeight;
}
Обьясняю суть кода:
Обычно все работают в редакторе в режиме FreeAspect (но это не важно, применимо под любое разрешение), устанавливаете все параметры размеров и позиций обьектов GUI как обычно в инспекторе, в свойствах.
Затем вешаете данный скрипт на каждый GUI обьект интерфейса. (ВАЖНО! - в делители переменных scrinBalansWidth и scrinBalansHeight пропишите реальные значения разрешения в котором настраивался GUI).
Дальше скрипт будет сам устанавливать все позиции и размеры относительно ScrinResolution, четко сохраняя все обьекты на своих местах в любой точке экрана.
Скрипт сначала записывает в свои переменные ваши настройки, затем пересчитывает все под текущее разрешение экрана и возвращает назад уже уточненые, сохраняя все соотношения и применяя новые размеры и позиции обьектов.
640 х 480
1920 х 1080
Вот, добавил для GUIText:
Синтаксис:
Используется javascript
private var pos_X = 0.0;
private var pos_Y = 0.0;
private var textSize = 0;
private var scrinWidth = 0.0;
private var scrinHeight = 0.0;
private var BalansWidth = 0.0;
private var BalansHeight = 0.0;
function Start () {
pos_X = guiText.pixelOffset.x;
pos_Y = guiText.pixelOffset.y;
textSize = guiText.fontSize;
scrinWidth = Screen.width;
scrinHeight = Screen.height;
BalansWidth = 800 / scrinWidth;
BalansHeight = 600 / scrinHeight;
guiText.pixelOffset.x = pos_X / BalansWidth;
guiText.pixelOffset.y = pos_Y / BalansHeight;
guiText.fontSize = textSize / BalansHeight;
}
private var pos_Y = 0.0;
private var textSize = 0;
private var scrinWidth = 0.0;
private var scrinHeight = 0.0;
private var BalansWidth = 0.0;
private var BalansHeight = 0.0;
function Start () {
pos_X = guiText.pixelOffset.x;
pos_Y = guiText.pixelOffset.y;
textSize = guiText.fontSize;
scrinWidth = Screen.width;
scrinHeight = Screen.height;
BalansWidth = 800 / scrinWidth;
BalansHeight = 600 / scrinHeight;
guiText.pixelOffset.x = pos_X / BalansWidth;
guiText.pixelOffset.y = pos_Y / BalansHeight;
guiText.fontSize = textSize / BalansHeight;
}