Im working alot with gui stuff in unity using ngui, the UIRoot script is good, but not as good as it should be. If you want your project to run in all type of display ratios (thats the problem, not resolutions) you should use something like that:
using UnityEngine;
using System.Collections;
[ExecuteInEditMode]
public class RatioFix : MonoBehaviour
{
Resolution[] resolutions;
void Start()
{
StartCoroutine("Do");
}
IEnumerator Do()
{
yield return new WaitForEndOfFrame
();
resolutions = Screen.resolutions;
float targetaspect = 16.0f / 9.0f;
float windowaspect = (float) resolutions[resolutions.Length - 1].width / (float)resolutions[resolutions.Length - 1].height;
float scaleheight = windowaspect / targetaspect;
Camera
[] camArray
= FindObjectsOfType
(typeof(Camera
)) as Camera
[]; //GameObject[] camArray = GameObject.FindGameObjectsWithTag("Respawn");
//Camera[] camArray = GameObject.FindGameObjectsWithTag("Respawn") as Camera[];
//GameObject[] gos = GameObject.FindGameObjectsWithTag("Enemy");
foreach (Camera camera in camArray)
{
if (camera.gameObject.layer != 10)
{
if (scaleheight < 1.0f)
{
Rect rect = camera.rect;
rect.width = 1.0f;
rect.height = scaleheight;
rect.x = 0;
rect.y = (1.0f - scaleheight) / 2.0f;
camera.rect = rect;
}
else
{
float scalewidth = 1.0f / scaleheight;
Rect rect = camera.rect;
rect.width = scalewidth;
rect.height = 1.0f;
rect.x = (1.0f - scalewidth) / 2.0f;
rect.y = 0;
camera.rect = rect;
}
}
}
}
}
Just put that script on an empty gameobject. It will fix the ratio for you.
Example: We did the layout in 16:9, if your test device uses the 16.9 Ratio, the UI will perfectly fill the screen without any borders, if you use a test device with 16.10 or any other display ratio, you will still get the full display width but with a black (you can fix that too) bar on the top and bottom.
Hope i could help,
regards