代码如下:
Vector2 worldPos = posSum / cells.Length;
Vector2 screenPos = RectTransformUtility.WorldToScreenPoint(Camera.main, worldPos);
Vector2 anchoredPos;
RectTransformUtility.ScreenPointToLocalPointInRectangle(parentOfUnitScore, screenPos, null, out anchoredPos);
unitScore.Set(parentOfUnitScore, anchoredPos, score.ToString(), cells.Length);
两个关键方法说明如下:
public static bool ScreenPointToWorldPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector3 worldPoint);
参数:
RectTransform rect:平面上的世界空间中的位置
Vector2 screenPoint:屏幕空间上的点
Camera cam:与屏幕点相关的相机
out Vector3 worldPoint:信息位置返回在worldPoint
描述:
将屏幕空间上的点转换为位于给定RectTransform平面上的世界空间中的位置。cam参数是与屏幕点相关的相机。对于Canvas设置为“Screen Space - Overlay mode”模式的情况,cam参数应该为null。
RectTransformUtility.ScreenPointToLocalPointInRectangle方法的说明可参照: