会计公司网站源码,在线作图软件,微信微网站开发百度云,石家庄怎样做网站Unity世界坐标转成UI坐标 介绍转换代码合并方法总结 介绍
在Unity中官方提供了很多坐标转换的API#xff0c;但是还没有一个API是将世界坐标系转换成UI的坐标系#xff0c;世界坐标系在屏幕中的位置是不固定的所以有时候需要转换成UI坐标系**#xff08;注意这里不是转换成… Unity世界坐标转成UI坐标 介绍转换代码合并方法总结 介绍
在Unity中官方提供了很多坐标转换的API但是还没有一个API是将世界坐标系转换成UI的坐标系世界坐标系在屏幕中的位置是不固定的所以有时候需要转换成UI坐标系**注意这里不是转换成屏幕坐标而是UI坐标**
转换代码
需要先将世界坐标转换成屏幕坐标然后在将屏幕坐标转换成UI坐标
世界坐标转屏幕坐标
//需要转换的世界坐标
Vector3 worldPostion new Vector3(0f, -3f, 0);
//世界坐标转换成屏幕坐标
Vector3 screenPosition Camera.main.WorldToScreenPoint(worldPostion );将屏幕坐标转换成UI坐标
//转换后的UI坐标
Vector2 localPosition;
//UI组件
RectTransform uiRectTransform;
//将屏幕坐标转换成UI的local坐标
RectTransformUtility.ScreenPointToLocalPointInRectangle(uiRectTransform, screenPosition, Camera.main, out localPosition);
//UI坐标赋值
uiRectTransform.anchoredPosition localPosition;合并方法
整理上述合并方法 /// summary/// 世界坐标转换成UI坐标直接赋值/// /summary/// param nameworldPos需要转换的世界坐标/param/// param nameuiRect需要转换坐标的UI/paramprivate void WorldToUIPos(Vector3 worldPos, RectTransform uiRect){//世界坐标转屏幕坐标Vector3 screenPosition Camera.main.WorldToScreenPoint(worldPos);// 将屏幕坐标转换为 UI 面板的本地坐标Vector2 localPosition;//将屏幕坐标转换成UI的local坐标RectTransformUtility.ScreenPointToLocalPointInRectangle(uiRect, screenPosition, Camera.main, out localPosition);//坐标赋值uiRect.anchoredPosition localPosition;}/// summary/// 世界坐标转换成UI坐标手动赋值/// /summary/// param nameworldPos需要转换的世界坐标/param/// param nameuiRect需要转换坐标的UI/param/// returns/returnsprivate Vector2 WorldToUIPosWithReturn(Vector3 worldPos, RectTransform uiRect){//世界坐标转屏幕坐标Vector3 screenPosition Camera.main.WorldToScreenPoint(worldPos);// 将屏幕坐标转换为 UI 面板的本地坐标Vector2 localPosition;//将屏幕坐标转换成UI的local坐标RectTransformUtility.ScreenPointToLocalPointInRectangle(uiRect, screenPosition, Camera.main, out localPosition);//注意这个地方的localPostion需要跟原坐标做不是直接赋值return localPosition;}总结
感谢大家的支持