赞
踩
unity的物体是在世界坐标里的,如果让UI里的物体对准世界里的物体需要一系列的转换。
- private void ShowTowerUpgrade(TowerCtrl ctrl)
- {
- towerCtrl = ctrl;//3D世界里的物体
- transform.localPosition = WorldPointToUILocalPoint(ctrl.transform.position);
- }
-
- private Vector3 WorldPointToUILocalPoint(Vector3 point)
- {
- //将世界坐标转为屏幕坐标
- Vector3 screenPoint = Camera.main.WorldToScreenPoint(point);
-
- //将屏幕坐标转换到RectTransform的局部坐标中
- Vector2 uiPosition;
- RectTransformUtility.ScreenPointToLocalPointInRectangle(transform.parent.GetComponent<RectTransform>(), screenPoint, UIManager.Instance.UICamera, out uiPosition);
- return uiPosition;
- }
这段代码是挂在UI中的m_Upgrade上的,所以代码中的transform指的是m_Upgrade的transform
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。