Unity中世界坐标转UGUI坐标

作者: 生活知识研习所 | 来源:发表于2018-02-02 16:16 被阅读23次

经常会遇到将ui元素的位置对应到某个世界坐标位置的需求,网上看了些解决办法,感觉太过复杂,也试过直接用Camera的WorldToScreenPoint方法和RectTransformUtility.ScreenPointToLocalPointInRectangle方法,结果都不对,后来仔细想想,UGUI元素都是放在Canvas中显示的,而Canvas的尺寸是根据CanvasScler中的设置来适配实际的屏幕分辨率的,并不一定会等于Screen的分辨率,刚好想到,Unity中ViewPort的尺寸大小是0-1,如果用ViewPort的坐标值来乘以Canvas的尺寸值不是就刚好得到世界坐标在UGUI坐标系中的位置了吗?

转换过程为

世界坐标-》ViewPort坐标-〉UGUI坐标

代码如下

public static Vector2 WorldToUGUIPosition(RectTransform canvasRectTransform,Camera camera,Vector3 worldPosition){

//世界坐标-》ViewPort坐标   

Vector2 viewPos = camera.WorldToViewportPoint(worldPosition);

//ViewPort坐标-〉UGUI坐标

  return new Vector2(canvasRectTransform.rect.width * viewPos.x, canvasRectTransform.rect.height * viewPos.y);

}

使用方法如下:

uiObject.localPosition = WorldToUGUIPosition(canvasRect, mainCamera, worldPosition);

相关文章

  • Unity中世界坐标转UGUI坐标

    经常会遇到将ui元素的位置对应到某个世界坐标位置的需求,网上看了些解决办法,感觉太过复杂,也试过直接用Camera...

  • NGUI与UGUI的区别

    总结: 1、NGUI与UGUI的区别 2、uGUI的Canvas 有世界坐标和屏幕坐标 3、uGUI的Image可...

  • Unity-uGUI与NGUI

    一、 uGUI与NGUI的区别 1、uGUI的Canvas 有世界坐标和屏幕坐标。 2、uGUI的Image可以使...

  • NGUI与UGUI的优缺点

    1. NGUI与UGUI的区别 uGUI的Canvas 有世界坐标和屏幕坐标 uGUI的Image可以使用mate...

  • 1. NGUI与UGUI的区别

    1) uGUI的Canvas 有世界坐标和屏幕坐标 2) uGUI的Image可以使用material 3) UG...

  • NGUI与UGUI的区别

    区别: 1、uGUI的Canvas 有世界坐标和屏幕坐标 2、uGUI的Image可以使用material 3、U...

  • 在Shader中获取模型世界坐标的方法

    在Unity中,unity_ObjectToWorld是将“模型坐标”转化成“世界坐标”的四维矩阵。重点是unit...

  • UGUI - 屏幕坐标和世界坐标关系详解

    本文主要分析ugui的屏幕坐标和世界坐标的关系,至于ugui的属性参考其他的文章学习下。 本文以一个RawImag...

  • Unity3D坐标系

    一 、世界坐标系--全局坐标系: 用来描述游戏场景内所有物体位置和方向的基准,也称为世界坐标系。Unity场景中创...

  • Unity3D的四种坐标系

    Unity3D的四种坐标系 【Unity3D的四种坐标系】 1、World Space(世界坐标):我们在场景中添...

网友评论

    本文标题:Unity中世界坐标转UGUI坐标

    本文链接:https://www.haomeiwen.com/subject/elsezxtx.html