DON'T use Screen.width and Screen.height to initialize your static member variables

A very simple test code seems like this:

using UnityEngine;
using System.Collections;

public class Const {
	public static Rect ScreenRect  = new Rect(0, 0, Screen.width, Screen.height);
}

If you reference Const.ScreenRect, you can get the right value 1024 and 768 when running in the editor. (iPad Wide 1024*768). But if you set the default orientation to “Landscape X” and running the code on the real device, although the display is landscape, the value is 768 for width and 1024 for height.

So I guess the default orientation of Screen is set to Portrait, the value is updated in some other initialization functions which is called after the static member variables are initialized.

You might want to init those in Start() instead.