UGUI世界坐标转屏幕坐标
来源:互联网 发布:微店和淘宝店哪个可靠 编辑:程序博客网 时间:2024/06/10 02:44
在使用NGUI中有专用的方法将3D场景中的世界坐标转换为UI屏幕中的2D坐标,在Unity新版的UGUI中,将世界坐标转换为屏幕坐标需通过以下几步来实现;
第一:将UI的锚点设为左下角,有的UI无法设置锚点是因为你的该组件或该组件的父物体没有添加RecTransform组件,添加该组件后调整它的锚点为左小脚;
第二:调用以下代码来转换坐标
/// <summary>
/// 世界坐标转UI屏幕坐标
/// </summary>
/// <param name="wordPosition"></param>
/// <returns></returns>
public static Vector2 WordToScenePoint(Vector3 wordPosition)
{
CanvasScaler canvasScaler = GameObject.Find("Canvas").gameObject.GetComponent<CanvasScaler>();
/// 世界坐标转UI屏幕坐标
/// </summary>
/// <param name="wordPosition"></param>
/// <returns></returns>
public static Vector2 WordToScenePoint(Vector3 wordPosition)
{
CanvasScaler canvasScaler = GameObject.Find("Canvas").gameObject.GetComponent<CanvasScaler>();
float resolutionX = canvasScaler.referenceResolution.x;
float resolutionY = canvasScaler.referenceResolution.y;
float offect = (Screen.width / canvasScaler.referenceResolution.x) * (1 - canvasScaler.matchWidthOrHeight) + (Screen.height / canvasScaler.referenceResolution.y) * canvasScaler.matchWidthOrHeight;
Vector2 a = RectTransformUtility.WorldToScreenPoint(Camera.main, wordPosition);
return new Vector2(a.x / offect, a.y / offect);;
}
}
第三:将上步计算的Vector2赋给UI组件
mImageTargeRec.anchoredPosition = WordToScenePoint(wordPosition);
0 0
- 世界坐标转UGUI屏幕坐标
- UGUI世界坐标转屏幕坐标
- 游戏世界坐标转化为UGUI屏幕坐标
- ugui屏幕坐标和世界坐标关系详解
- 世界坐标转到UGUI坐标
- 世界坐标转到UGUI坐标
- OSG世界坐标转屏幕坐标
- 世界坐标转NGUI屏幕坐标
- Unity世界坐标转屏幕坐标计算
- 屏幕坐标到世界坐标
- OGRE的2D坐标、CEGUI坐标、鼠标坐标、 世界坐标转屏幕坐标
- OGRE的2D坐标、CEGUI坐标、鼠标坐标、 世界坐标转屏幕坐标
- UGUI坐标与世界坐标的转换
- 屏幕坐标到opengl世界坐标转换
- 屏幕坐标到opengl世界坐标转换
- D3D世界坐标变换到屏幕坐标
- 屏幕坐标向世界坐标转换
- osg 屏幕坐标和世界坐标转换
- java synchronized详解
- iOS打包失败的可能情况
- 韩顺平的校内网案例中的一个比较典型的table布局
- Android 使用工具
- 吴英昊:电商搜索引擎的架构设计和性能优化
- UGUI世界坐标转屏幕坐标
- initWithFrame 方法的理解与使用
- ionic 幻灯指令 ion-slide-box
- LeetCode- Two Sum
- 安卓Animation动画(转载)
- 内容转化为List
- 【C语言提高15】字符串一级指针内存模型
- 使用vim-gui-common实现从vim窗口复制内容到系统剪贴板
- Java:单例模式的七种写法