Could someone explain me, how can I draw GUI Texture partially (with given UV-coords) and make texture stretched (with aspect ration different from it`s original)?
GUI.DrawTexture can stretch textures, but cannot draw a part of it.
GUI.DrawTextureWithTexCoords can accept the UVs, but cannot stretching options.
My case:
I draw animated GUI-elements, and use UVs to draw one frame of spritesheet. It worked fine until I had to animate non-square texture. Besides, the size (and aspect ratio) of the output rect is calculated runtime.
Does someone know any solution?
Thanks in advance 
Using GUI.DrawTextureWithTexCoords() you can draw part of a texture. You need to set correctly coordinate UVs. For example, we should draw only a half of a texture in a certain size. See an example below(write on CSharp):
public Texture2D myTex = null; //our texture, reference in Inspector
private Rect myRect; //our UVs coordinate
void Start() {
//Initialixation rectangle for half texture;
myRect = new Rect(0, 0, 0.5f, 0.5f);
}
void OnGUI() {
//Draw our part texture for size, for example, 300x200. It doesn't consider aspect of a texture
//first element - position, second - texture, third - UVs
GUI.DrawTextureWithTexCoords(new Rect(20, 20, 300, 200), myTex, myRect);
}
I hope that it will help you.