Hello good people of unity! I’m currently doing GUITexture. What I want to do is to make the texture scale according to the aspect ratio (if that makes sense)? What I mean is that if I have a GUITexture (that acts as button) is of size dimension 232 x 106 pixels in a 1920 x 1080 (16:9) screen by default, i want the texture to be smaller size in a smaller screen/resolution (lets say a screen of 1024 x 768 (4:3)) BUT I don’t want that texture to be squashed.
Because previously my GUI were created by using ONGUI() and it was squashed when i switched to a smaller resolution. Eg.
void ResizeGUIMatrix()
{
// http://answers.unity3d.com/questions/359320/relate-font-size-to-screen-size-in-guiskin.html
// Set matrix
Vector2 ratio = new Vector2(Screen.width/defaultScreenRes.x , Screen.height/defaultScreenRes.y );
Matrix4x4 guiMatrix = Matrix4x4.identity;
guiMatrix.SetTRS(new Vector3(1, 1, 1), Quaternion.identity, new Vector3(ratio.x, ratio.y, 1));
GUI.matrix = guiMatrix;
}
void OnGUI()
{
// Resize GUI Matrix according to screen size
ResizeGUIMatrix();
DrawButtons();
// Reset matrix after finish
GUI.matrix = Matrix4x4.identity;
}
My research led me to [this][1].
And I tried all sorts of different things such as:
void Update ()
{
if (currentScr.y != Screen.height)
{
self.pixelInset = new Rect(
// (self.pixelInset.x / defaultScreenRes.x) * Screen.currentResolution.width,
// ((Screen.height - self.pixelInset.y) / defaultScreenRes.y) * Screen.currentResolution.height,
self.pixelInset.x,
self.pixelInset.y,
Mathf.RoundToInt( self.pixelInset.width * (float)(currentScr.y / Screen.height)),
Mathf.RoundToInt( self.pixelInset.height * (float)(currentScr.y / Screen.height)) );
Debug.Log("Result: "+((float)(currentScr.y / Screen.height)));
currentScr.Set(Screen.width, Screen.height);
}
}
But it still doesnt work. Can anyone help me out here? All help will be much appreciated thanks!
[1]: Build is changing GUI positions - Unity Answers