Hello everyone, I simply want to place texts on the screen so I use GUI.Label like this:
GUI.Label (Rect(Screen.width - 200,Screen.height-500,200,80),"Points : ");
I can adjust it very well according to my resolution ( 1920x1080 ) but when I run the game in 1024x768 for example, texts’ places will be messed up, even some of them gets out of the screen & become invisible. Is there any way to make the text occur always on the same place of the screen without changing according to the resolution ? Thanks
You seems to be coding in unityscript, so put that script in a Standard Assets folder (I didn’t test it) :
using UnityEngine;
[System.Serializable]
public class ViewportRect
{
private float m_fX = 0f, m_fY = 0f, m_fWidth = 1f, m_fHeight = 1f;
public float x{ get{ return m_fX; } set{ m_fX = Mathf.Clamp01(value); } }
public float y{ get{ return m_fY; } set{ m_fY = Mathf.Clamp01(value); } }
public float width{ get{ return m_fWidth; } set{ m_fWidth = Mathf.Clamp01(value); } }
public float height{ get{ return m_fHeight; } set{ m_fHeight = Mathf.Clamp01(value); } }
public ViewportRect():this(0f,0f,1f,1f){}
public ViewportRect( Rect r ){ FromRect(r); }
public ViewportRect( float _x, float _y, float_width, float _height )
{
x = _x;
y = _y;
width = _width;
height = _height;
}
public Rect ToRect()
{
return new Rect( x * Screen.width, y * Screen.height, width * Screen.width, height * Screen.height );
}
public ViewportRect FromRect( Rect r )
{
x = r.x / Screen.width;
y = r.y / Screen.height;
width = r.width / Screen.width;
height = r.height / Screen.height;
return this;
}
}
The point is to manipulate coordinate between 0 and 1. Be carefull, the ratio will be lost.