- Home /
behavior of Screen object differs in Unity 3
Hi, anyone else having this problem? In Unity 2.x editor, the code below puts the texture in the middle of the screen ; whether you "maximize on play" the game window or not. This is the correct behavior. In Unity 3, the texture is correctly displayed only in the non-maximized view; when you switch to "maximize on play" the texture is at the top left quadrant of the screen. I also find that the Debug.Log messages show that Screen width and height are the same in both views.
var crosshairTexture : Texture2D; var position : Rect;
function Awake() { Debug.Log(Screen.width ); Debug.Log(Screen.height ); position = Rect( ( Screen.width - crosshairTexture.width ) / 2, ( Screen.height - crosshairTexture.height ) / 2, crosshairTexture.width, crosshairTexture.height );
}
function OnGUI () { GUI.DrawTexture(position, crosshairTexture); }
Answer by Eric5h5 · Oct 24, 2010 at 08:57 PM
Unity 3.0 has a bug where "maximize on play" returns incorrect values for the first couple of frames. So you have to avoid using it, or build in a delay that waits a few frames before using Screen.width/height.
This is very helpful to know. I think this problem is not just a maximize on play problem, because I am seeing the same thing in the editor where my UI appears in the middle of the screen ins$$anonymous$$d of where it's supposed to. FWIW, my Game View is not a standard monitor resolution. I thought I was going bananas since I was using the same code as before.
Your answer
Follow this Question
Related Questions
Screen width and height, how to bypass?! 1 Answer
Changing height of camera based on device aspect ratio. How? 0 Answers
Object resolution 0 Answers
Filling the screen doesn't... 1 Answer
Game fills only one quarter of the screen, why? (Android) 1 Answer