GUITexture scaling with aspect ratio?

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! :slight_smile:
[1]: Build is changing GUI positions - Unity Answers

If its just GUI.Texture alone, set all the pixel insets to 0 in the inspector, set the scale to 0.1 or more on the x and y , so you can see it ( or it will be size 0 , 0… (Invisible)).

Then in the SceneView, use the colored arrows to position the GUI.Textures. No code needed.

(Only with GUI.Textures though, GUI.Buttons etc need code to tell them where to be (because they are code).

This might not be the best/right way, but its the cleanest and easiest. (I think)

GoodLuck!