Unity 将世界坐标转UI坐标

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

猜你喜欢

转载自blog.csdn.net/cuijiahao/article/details/122322113
今日推荐