NGUI 與世界座標與螢幕座標之間的轉換的幫助類
在遊戲開發中,避免不了會用到座標轉化的情況,下面自己寫的幫助類方法
public class UtilHelper : SingletonObject<UtilHelper>
{
public Vector3 PosScreenToNgui(Vector3 screenPos)
{
Camera NguiCamera = NGUITools.FindCameraForLayer(LayerMask.NameToLayer("UI"));
var nguiPos = NguiCamera.ScreenToWorldPoint(screenPos);
return nguiPos;
}
public Vector3 PosScreenToWorld(Vector3 screenPos, float z)
{
Camera worldCamera = NGUITools.FindCameraForLayer(LayerMask.NameToLayer("Default"));
screenPos.z = z;
var worldPos = worldCamera.ScreenToWorldPoint(screenPos);
return worldPos;
}
public Vector3 PosWorldToNgui(GameObject target)
{
Camera worldCamera = NGUITools.FindCameraForLayer(LayerMask.NameToLayer("Default"));
Camera NguiCamera = NGUITools.FindCameraForLayer(LayerMask.NameToLayer("UI"));
var screenPos = worldCamera.WorldToScreenPoint(target.transform.position);
var nguiPos = NguiCamera.ScreenToWorldPoint(screenPos);
nguiPos.z = 0;
return nguiPos;
}
public Vector3 PosWorldToScreen(GameObject target)
{
Camera worldCamera = NGUITools.FindCameraForLayer(LayerMask.NameToLayer("Default"));
var screenPos = worldCamera.WorldToScreenPoint(target.transform.position); screenPos.z = 0;
return screenPos;
}
public Vector3 PosNguiToWorld(Vector3 target, float z)
{
Camera worldCamera = Camera.main;
Camera NguiCamera = UICamera.currentCamera;
var screenPos = NguiCamera.WorldToScreenPoint(target);
screenPos.z = z;
var worldPos = worldCamera.ScreenToWorldPoint(screenPos);
return worldPos;
}
public void AutoFitCamera()
{
var camera = NGUITools.FindCameraForLayer(LayerMask.NameToLayer("UI"));
camera.aspect = 1280f / 720f;
Debug.Log("camera.aspect:"+camera.aspect);
}
}