之前做的一个农场牧场项目里,遇到植物信息的显示以及铲除、采摘等效果的实现,图片如下
![DQ~ADYIIEW(5WP6`IJH40C.png
想要实现这种效果 ,上代码
publick GameObject targetObj; // 这里我设定的是某个obj
private RectTransform tRectTran;
private float offset;
void Awake()
{
tRectTran = transform as RectTransform;
CanvasScaler canvasScaler = transform.parent.parent.GetComponent<CanvasScaler>();
offset = (Screen.width / canvasScaler.referenceResolution.x) * (1 - canvasScaler.matchWidthOrHeight)
+ (Screen.height / canvasScaler.referenceResolution.y) * (canvasScaler.matchWidthOrHeight);
}
void UpdateContent()
{
if(targetObj == null)
{
return;
}
// 如果是AR效果下, 把main camera改成arcamera
Vector3 screenPos = Camera.main.WorldToScreenPoint(targetObj.transform.position);
Vector2 uiPos = new Vector2(screenPos.x / offset, screenPos.y / offset);
//anchoredPosition是UI元素的屏幕坐标,在对UI元素进行操作的时候应该考虑使用这个坐标
tRectTran.anchoredPosition = uiPos;
}
一定记得把该控件的锚点位置设置在左下角
OK, 这里如果对各个坐标不清楚, 请看我的另一篇文章 [Unity3D里的各种坐标系]