纳金网
标题:
世界坐标转UGUI屏幕坐标
[打印本页]
作者:
刀锋狼
时间:
2015-7-30 00:31
标题:
世界坐标转UGUI屏幕坐标
UGUI在使用Carema作为摄像机时,需要通过Canvas下的Canvas Scaler组件的referenceResolution参数来计算屏幕缩放比: 例如
float offect = (Screen.width / canvasScaler.referenceResolution.x) * (1 - canvasScaler.matchWidthOrHeight) + (Screen.height / canvasScaler.referenceResolution.y) * canvasScaler.matchWidthOrHeight;
复制代码
通过上面这段代码来计算坐标的缩放比,具体坐标转化代码如下:
CanvasScaler canvasScaler = GameObject.Find("Canvas").gameObject.GetComponent<CanvasScaler>();
float resolutionX = canvasScaler.referenceResolution.x;
float resolutionY = canvasScaler.referenceResolution.y;
float offect = (Screen.width / canvasScaler.referenceResolution.x) * (1 - canvasScaler.matchWidthOrHeight) + (Screen.height / canvasScaler.referenceResolution.y) * canvasScaler.matchWidthOrHeight;
Vector2 a =RectTransformUtility.WorldToScreenPoint(Camera.main, plant[index].transform.GetChild(0).transform.position);
return new Vector3(a.x / offect, a.y / offect, 0);
复制代码
这样,就会得到屏幕上的UI坐标
注意!!
记得把描点设置到右下角,这样计算才会得到正确的坐标
欢迎光临 纳金网 (http://go.narkii.com/club/)
Powered by Discuz! X2.5