我们开发的环境是unity+Ngui,正常情况,ngui的 UIRoot和UICamera组件有自动屏幕分辨率调节,但是UIroot的策略是根据屏幕的高度来计算的,而我们希望的是宽度来缩放。
我们采取的方法是:
1,停用Uiroot,不用该组件,并且把根节点的缩放还原为1.
2,修改UIcamera的代码 如下:在Awake调用一下changeResolution方法就行了。
3,该脚本的优势主要是根据IOS现有设备的分辨率计算的。我们用了好几个项目,目前感觉还是很不错的。
void changeResolution()///
{
int sw = Mathf.Min(Screen.width, Screen.height);
int sh = Mathf.Max(Screen.width, Screen.height);
if (sw == 0 || sh == 0) { return; }//这儿加这句话的原因是初始化打开unity的时候 sw 和sh的值为0 可能是预编译 然后计算下去 会发现分母为0 然后 报错,但是运行的时候不会
if (sw < 640)
{
cameraWidth = 640;
}
else if (sw > 768)
{
cameraWidth = 768;
}
else
{
cameraWidth = sw;
}
cameraHeight = cameraWidth * sh / sw;
camera.orthographicSize = cameraHeight / 2;
//
if (cameraHeight > 1138)
{
cameraHeight = 1138;
cameraWidth = sw * cameraHeight / sh;
camera.orthographicSize = cameraHeight / 2;
//
}
Deb