UGUI在使用Carema作为摄像机时,需要通过Canvas下的Canvas Scaler组件的referenceResolution参数来计算屏幕缩放比:
通过上面这段代码来计算坐标的缩放比,具体坐标转化代码如下:
这样,就会得到屏幕上的UI坐标
例如
[code]csharpcode:
float offect = (Screen.width / canvasScaler.referenceResolution.x) * (1 - canvasScaler.matchWidthOrHeight) + (Screen.height / canvasScaler.referenceResolution.y) * canvasScaler.matchWidthOrHeight;
[code]csharpcode:
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);
注意!!
记得把描点设置到右下角,这样计算才会得到正确的坐标