I'm looking for the best way to scale GUI elements in unity. In particular, I need to scale GUIText and GUITexture elements so they are able to be seen in higher resolutions.
the best approach is to design the gui in a high resolution and then scale it down in lower ones. using GUI.matrix you can move/rotate/scale the gui. the code is available in 3d platformer tutorial of unity too. my gui for the game was designed for 600 X 450 so the first line in OnGUI was
GUI.matrix = Matrix4x4.TRS(Vector3.zero,Quaternion.identity,new Vector3(Screen.width/600f,Screen.height/450f,1f));
you can replace 600 and 450 with native resolutions of your gui. this line should be the first one in OnGUI to affect all gui calls after it. if you want to scale some of the elements then you need to set the matrix to something like this before calling them (for example before GUI.TextField) and after calling the element's function then scale the matrix to a normal 1X1X1 scale.