using UnityEngine;

public class ScreenToUI : MonoBehaviour
{
public const float UI_Width = 1366f;
public const float UI_Height = 768f; public readonly static float Screen_Width_Half = Screen.width / 2f;
public readonly static float Screen_Height_Half = Screen.height / 2f; public readonly static float Screen_UI_Ratio = UI_Width / UI_Height;
public readonly static float Screen_Screen_Ratio = Screen.width / Screen.height; public readonly static float Screen_Width_Ratio = UI_Width / Screen.width;
public readonly static float Screen_Height_Ratio = UI_Height / Screen.height; private Vector3 m_position_offset; private void Awake()
{
m_position_offset = Vector3.zero; //计算目标偏移量,遍历到以中心为锚点的父物体为止
Transform target = transform; int index = , count = ; while (target != null)
{
if (index++ < count)
{
m_position_offset += target.localPosition; target = target.parent;
}
else
{
break;
}
}
} private void Update()
{
if (Input.GetMouseButton())
{
Vector3 position = FormatPosition(Input.mousePosition); //do something... Debug.LogError(position);
}
} private Vector3 FormatPosition(Vector3 position)
{
float ratio_width = , ratio_height = ; if (Screen_UI_Ratio != Screen_Screen_Ratio)
{
if (Screen_UI_Ratio < Screen_Screen_Ratio)
{
float real = Screen.height * Screen_UI_Ratio;
ratio_width = Screen.width / real;
}
else
{
float real = Screen.width / Screen_UI_Ratio;
ratio_height = Screen.height / real;
}
} position.x -= Screen_Width_Half;
position.y -= Screen_Height_Half; position.x *= Screen_Width_Ratio * ratio_width;
position.y *= Screen_Height_Ratio * ratio_height; position -= m_position_offset; return position;
}
}

屏幕坐标以左下角为坐标

UGUI以中心为坐标

首先将坐标位置转换

然后通过屏幕宽高比与UGUI设置的宽高比进行计算,UGUI.UIScaleMode = Scale With Screen Size

最后计算父物体与中心点的偏移量

屏幕坐标点转UGUI坐标【包含屏幕适配】的更多相关文章

  1. 【Unity笔记】UGUI中Canvas屏幕适配

    1.通过RectTransform中的Anchors和Pivot来进行控件和窗体的布局适配. Anchors控制当前Panel相对于父窗体的布局位置,可以设置为居中或者左上角,当父窗体拉伸的时候当前P ...

  2. iOS - iPhone屏幕适配/启动图适配/APP图标适配(iPhone最全尺寸包含iPhoneX/XR/XS/XS Max等)

    趁iPhone新品还没有发布,先整理一下屏幕适配.启动图适配.APP图标适配的笔记,方便以后查阅: 注:部分图片来源于网络 违删; (一)iPhone屏幕适配: (1)屏幕分辨率: ①设计尺寸规范(表 ...

  3. 关于Unity中的屏幕适配

    一.Game视图的屏幕分辨率可以先自定义添加,供以后选择,以下是手游经常用到的分辨率: 1.1136X640,iPhone5 2.1920X1080,横屏,主流游戏都是这个分辨率 3.1080X192 ...

  4. IOS开发之绝对布局和相对布局(屏幕适配)

    之前如果做过Web前端页面的小伙伴们,看到绝对定位和相对定位并不陌生,并且使用起来也挺方便.在IOS的UI设计中也有绝对定位和相对定位,和我们的web前端的绝对定位和相对定位有所不同但又有相似之处.下 ...

  5. JavaScript强化教程 —— Cocos2d-JS的屏幕适配方案

    1. 设置屏幕适配策略(Resolution Policy) 如果你还没有用过Resolution Policy,只需要在游戏载入过程完成之后(cc.game.onStart函数回调中),调用下面的代 ...

  6. CSS基础教程 -- 媒体查询屏幕适配

    响应式布局 Media Query 的使用方法 在上例中, 我们使用Media Queries来根据3种不同尺寸的窗口使用3种不同的样式.通过不同的媒体类型和条件定义样式表规则,媒体查询让CSS可以更 ...

  7. 【收藏】Android屏幕适配全攻略(最权威的Google官方适配指导)

    来源:http://blog.csdn.net/zhaokaiqiang1992 更多:Android AutoLayout全新的适配方式, 堪称适配终结者 Android的屏幕适配一直以来都在折磨着 ...

  8. Android屏幕适配全攻略(最权威的官方适配指导)(转),共大家分享。

    Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...

  9. iOS开发——UI基础-屏幕适配

    一.适配 1.什么是适配?适应.兼容各种不同的情况 2.移动开发中,适配的常见种类 2.1系统适配 针对不同版本的操作系统进行适配 2.2屏幕适配 针对不同大小的屏幕尺寸进行适配 二.点和像素 1.在 ...

随机推荐

  1. mysql优化-覆盖索引查询,join

    1 原始sql: SELECT a.* FROM event_data a WHERE a.receive_time >= '2018-03-28 00:00:00' AND a.receive ...

  2. bzoj4009 [HNOI2015]接水果 整体二分+扫描线+树状数组+dfs序

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4009 题解 考虑怎样的情况就会有一个链覆盖另一个链. 设被覆盖的链为 \(a - b\),覆盖 ...

  3. thinkphp url和路由

    一.入口模块修改 修改public下的index 加入 define('BIND_MODULE','admin'); 即可将入门模块绑定到admin模块 <?php // [ 应用入口文件 ] ...

  4. 洛谷 P1407 稳定婚姻

    问题描述 我国的离婚率连续7年上升,今年的头两季,平均每天有近5000对夫妇离婚,大城市的离婚率上升最快,有研究婚姻问题的专家认为,是与简化离婚手续有关.25岁的姗姗和男友谈恋爱半年就结婚,结婚不到两 ...

  5. c#类的定义,c#中的关健字,C#标识符

    什么是类:一种数数据结构,存储数据成员,方法成员,和其它的内容,便 于方便 谳用C#语法: class 类名{ //TODO} C#中关键字(小写)不能作为方法名,类名,命名空间名等, static ...

  6. CF1037H Security 后缀自动机 + right集合线段树合并 + 贪心

    题目描述: 给定一个字符串 $S$ 给出 $Q$ 个操作,给出 $L,R,T$,求出字典序最小的 $S_{1}$ 为 $S[L...R]$的子串,且 $S_{1}$ 的字典序严格大于 $T$. 输出这 ...

  7. NOIp 数据结构专题总结 (1):STL、堆、并查集、ST表、Hash表

    系列索引: NOIp 数据结构专题总结 (1) NOIp 数据结构专题总结 (2) STL structure STL 在 OI 中的运用:https://oi.men.ci/stl-in-oi/ s ...

  8. 笨办法学Python(learn python the hard way)--练习程序21-30

    下面是练习21-30,基于python3 #ex21.py 1 def add(a, b): print("ADDING %d + %d" %(a, b)) return a+b ...

  9. instagram

    https://www.instagram.com/graphql/query/?query_hash=42323d64886122307be10013ad2dcc44&variables={ ...

  10. eureka注册中心wro.css wro.js 404

    注册中心和配置中心放在一个module里面,如果不配置配种中心的访问前缀,会被config拦截.所以改动如下: package com.cloud.stagging.lhcloudeureka; im ...