Aspect ratio keeping guitexture scaling

I have made a simple script to scale my gui-textures in relation to my screen height and the texture aspect ratio but when I run it it scales my texture in a quadratic shape not in a rectangle. I tried to calculate the values myself and everything was right but somehow the program calculates wrong numbers.

I have read out the start values:

guiTexture.texture.width = 900

guiTexture.texture.height = 600

Screen.height = 879

sizeFactor = 3


the program calculates:

ratio = 1 ← That is what confuses me :frowning:

tHeight = 293

tWidth = 293

xInset = -146

yInset = -146

I hope you understand my problem and sorry for my bad english :).


Here is my code:

#pragma strict

var sizeFactor : int;

private var ratio : float;
private var tHeight : int;
private var tWidth : int;
private var xInset : int;
private var yInset : int;

function Start () {

	ratio = guiTexture.texture.width / guiTexture.texture.height;
	tHeight = Screen.height / sizeFactor;
	tWidth = tHeight * ratio;
	xInset = (tWidth / 2) * -1;
	yInset = (tHeight / 2) * -1;
	guiTexture.pixelInset = Rect(xInset,yInset,tWidth,tHeight);
	
	
	transform.position = new Vector3(0.5,0.5,0);
}

function Update () {
	
	tHeight = Screen.height / sizeFactor;
	tWidth = tHeight * ratio;
	xInset = (tWidth / 2) * -1;
	yInset = (tHeight / 2) * -1;
	guiTexture.pixelInset = Rect(xInset,yInset,tWidth,tHeight);
	
	transform.position = new Vector3(0.5,0.5,0);
}

As both the gui texture widht and height are integer values (int), this line:

ratio = guiTexture.texture.width / guiTexture.texture.height;

Uses integer division - meaning that results are rounded. If you cast the values to floats, you should get a proper ratio:

ratio = (float)guiTexture.texture.width / (float)guiTexture.texture.height;