纳金网

标题: 世界坐标转UGUI屏幕坐标 [打印本页]

作者: 刀锋狼    时间: 2015-7-30 00:31
标题: 世界坐标转UGUI屏幕坐标

UGUI在使用Carema作为摄像机时,需要通过Canvas下的Canvas Scaler组件的referenceResolution参数来计算屏幕缩放比:    例如   

  1. float offect = (Screen.width / canvasScaler.referenceResolution.x) * (1 - canvasScaler.matchWidthOrHeight) + (Screen.height / canvasScaler.referenceResolution.y) * canvasScaler.matchWidthOrHeight;
复制代码
通过上面这段代码来计算坐标的缩放比,具体坐标转化代码如下:
  1. CanvasScaler canvasScaler = GameObject.Find("Canvas").gameObject.GetComponent<CanvasScaler>();
  2.         float resolutionX = canvasScaler.referenceResolution.x;
  3.         float resolutionY = canvasScaler.referenceResolution.y;
  4.         float offect = (Screen.width / canvasScaler.referenceResolution.x) * (1 - canvasScaler.matchWidthOrHeight) + (Screen.height / canvasScaler.referenceResolution.y) * canvasScaler.matchWidthOrHeight;
  5.         Vector2 a =RectTransformUtility.WorldToScreenPoint(Camera.main, plant[index].transform.GetChild(0).transform.position);
  6.         return new Vector3(a.x / offect, a.y / offect, 0);
复制代码
这样,就会得到屏幕上的UI坐标
注意!!
记得把描点设置到右下角,这样计算才会得到正确的坐标






欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5